многопоточность: почему генераторы не поддерживают потоки? Что происходит, когда он разделяется между потоками?

я читаюэтот вопрос который спрашивает, являются ли генераторы потокобезопасными, и один ответ сказал:

Это не потокобезопасно; одновременные вызовы могут чередоваться и связываться с локальными переменными.

Другой ответ показывает, что вы можете использовать блокировку, чтобы гарантировать, что только один поток использует генератор одновременно.

Я новичок в многопоточности. Может кто-нибудь придумать пример, чтобы показать, что именно происходит, когда вы используете генератор без блокировки?

Например, у меня, кажется, нет проблем, если я сделаю это:

import threading

def generator():
    for i in data:
        yield i

class CountThread(threading.Thread):
    def __init__(self, name):
        threading.Thread.__init__(self)
        self.name = name

    def run(self):
        for i in gen():
            print '{0} {1}'.format(self.name, i)

data = [i for i in xrange(100)]
gen = generator()
a = CountThread('a')
b = CountThread('b')
a.start()
b.start()

Ответы на вопрос(1)

Ваш ответ на вопрос