[Tutor] knowing when a list is updated by a thread
bob gailer
bgailer at gmail.com
Wed Apr 23 15:46:45 CEST 2008
Kent Johnson wrote:
> Vaibhav.bhawsar wrote:
>> i have this code to print every new element in a list only when the
>> list length changes (while the list is updated by a thread running
>> elsewhere)...I was wondering if there is a pythonic way to do this?
>> how does one know when there is a new element in the list?
>>
>> prevlength = 0
>> while geoCode.running:
>> places = geoCode.getResults() #returns a list with most up to
>> date elements..the list grows as the thread that updates it
>> if len(places) > prevlength:
>> print places[prevlength]
>> prevlength = len(places)
>
> Ouch. This loop will chew up CPU time unless there is some kind of
> delay in getResults(). If the intent of the loop is to print every new
> value placed in the list, there is no guarantee that it will work.
>
> If you are using the list to communicate results between two threads
> you should see if queue.Queue meets your needs. It is thread safe and
> has blocking access so you don't have to use a busy loop.
>
Evey time someone recommends Queue I think "oh boy this will really help
me". Then I go to the Library Reference, read the Queue docs and think
"oh boy who can help me understand this". Even the sample code is
confusing.
Is there some other documentation or example?
--
Bob Gailer
919-636-4239 Chapel Hill, NC
More information about the Tutor
mailing list