Are generator functions thread-safe?
tim.one at comcast.net
Mon Sep 16 12:18:33 EDT 2002
> Also, if a call to the generator object is running from one thread, you
> will get an exception if you attempt to simultaneously call it (e.g.
> from another thread). I don't know how thread-safe is the code that
> prevents the generator from being called twice simultaneously, though.
A generator-iterator has an internal "am I currently running?" flag that's
inspected and mutated under protection of the GIL, so it's thread-safe. The
flag is exposed as the gi_running attribute of a generator-iterator object,
although I haven't found a use for that yet <wink>:
>>> def g():
... print i.gi_running
... yield 42
>>> i = g()
>>> x = i.next()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
More information about the Python-list