interesting threading result..

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Mon Oct 29 20:13:04 EDT 2007


En Mon, 29 Oct 2007 20:26:40 -0300, Abandoned <besturk at gmail.com> escribió:

> Now this is my real code and the problem  continue.
> What is the mistake?

I don't see where you define "query" so this can't be your complete code.

>
> import threading
>
>
> class GetData(threading.Thread):
>    def __init__(self, name):
>       threading.Thread.__init__(self)
>       self.name = name
>
>
>    def run(self):
>         self.data={2:3, 3:4}
>
>
> i=0
> datas={"n": [['msn']]}
> nglist=nlist={0: list()}

Here, you make nglist and nlist refer to the same object (a dictionary,  
not a list!)
To be short: nglist and nlist are the same thing

> for x in query:
>         tip=x
>         for a in datas[x]:
>                 for o in a:
>                         if len(o)>1:
>                                 current = GetData(o)
>                                 nglist[i].append(current)
>                                 current.start()

Here, you append current to nglist[i]. current is an instance of the  
GetData class, a Thread. As nglist is the same thing as nlist, nlist[i]  
contains a GetData instance too.

>         i=i+1
>
> for x in range(0,len(nglist)):
>         for jk in range(0,len(nglist[x])):
>                 jkl=nglist[x][jk]
>                 jkl.join()
>                 sonuc=jkl.data
>                 nlist[x].append(sonuc)
>
> print nlist
> {0: [<GetData(Thread-1, stopped)>, {2: 3, 3: 4}]}

It's not surprising to see here the object appended above.

I can't say how to improve/fix this because I can't see the purpose of all  
this. Could you explain what do you want to do exactly?

-- 
Gabriel Genellina




More information about the Python-list mailing list