threading - race condition?

skunkwerk skunkwerk at gmail.com
Fri May 9 00:30:32 EDT 2008


On May 8, 4:54 pm, castiro... at gmail.com wrote:
> On May 8, 5:45 pm, skunkwerk <skunkw... at gmail.com> wrote:
>
>
>
> > i'm getting the wrong output for the 'title' attributes for this
> > data.  the queue holds a data structure (item name, position, and list
> > to store results in).  each thread takes in an item name and queries a
> > database for various attributes.  from the debug statements the item
> > names are being retrieved correctly, but the attributes returned are
> > those of other items in the queue - not its own item.  however, the
> > model variable is not a global variable... so i'm not sure what's
> > wrong.
>
> > i've declared a bunch of workerthreads(100) and a queue into which
> > new requests are inserted, like so:
>
> > queue = Queue.Queue(0)
> >  WORKERS=100
> > for i in range(WORKERS):
> >         thread = SDBThread(queue)
> >         thread.setDaemon(True)
> >         thread.start()
>
> > the thread:
>
> > class SimpleDBThread ( threading.Thread ):
> >    def __init__ ( self, queue ):
> >                 self.__queue = queue
> >                 threading.Thread.__init__ ( self )
> >    def run ( self ):
> >                 while 1:
> >                         item = self.__queue.get()
> >                         if item!=None:
> >                                 model = domain.get_item(item[0])
> >                                 logger.debug('sdbthread item:'+item[0])
> >                                 title = model['title']
> >                                 scraped = model['scraped']
> >                                 logger.debug("sdbthread title:"+title)
>
> > any suggestions?
> > thanks
>
> I'll base this on terminology: if a model is in a brain (throughout
> the known universe), and a dollar's a dollar, it may not pay to build
> a computer out of brains.
>
> If man arises as a tool-carrier, we will carry tools, not people.
> Don't use Python to make people; make money, and not too much.  Pick a
> wage and you might get somewhere.

excuse me?



More information about the Python-list mailing list