I\'m learning multithreading in Python. I want to know how to provide data to multiple threads using generators. Here\'s what I wrote:
import threading
Can you just use Python Queue class. I believe that is thread safe. Basically you could just use your generator to fill the Queue and then have each thread pull from it.
#!/usr/bin/python
import Queue
import threading
queueOfNumbers = Queue.Queue()
data = [i for i in xrange(100)]
def generator():
for i in data:
yield i
class CountThread(threading.Thread):
def __init__(self, name, queue):
threading.Thread.__init__(self)
self.name = name
self.queue = queue
def run(self):
i = self.queue.get()
print '%s %s' % (self.name, i)
a = CountThread('a', queueOfNumbers)
b = CountThread('b', queueOfNumbers)
a.start()
b.start()
for num in generator():
queueOfNumbers.put(num)
queueOfNumbers.join()
http://www.ibm.com/developerworks/aix/library/au-threadingpython/