You create a new generator in each thread in runusing this:
for i in generator():
each call generatorreturns a new instance of the generator:
>>> data = [i for i in xrange(10)]
>>> a, b = generator(), generator()
>>> id(a), id(b)
(37528032, 37527952)
a b :
>>> list(a), list(b)
([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
, , . , . , ValueError: generator already executing . Queue.Queue .