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.
Otherwise you could use a threading.Condition to communicate between the
threads.
Kent
_______________________________________________
Tutor maillist - Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor