闭包生成器在Python中是否安全?

时间:2017-03-23 23:50:59

标签: python multithreading multiprocessing closures python-multithreading

我并不完全清楚Python中的线程安全性如何关闭,特别是在生成器方面。例如,如果我从多个线程(或通过多处理的多个进程)调用一个函数,看起来像这样:

def count_to_ten():
    def counter_gen():
        for i in range(10):
            yield i
    return [i for i in counter_gen()]

返回到我的主题的数字列表是[0,1,2,3,...,9]还是会有竞争条件,我最终会得到不同结果的线程?

显然,以下内容不是线程安全的:

def counter_gen():
    for i in range(10):
        yield i

但如果它被包装在一个函数中并被定义为一个闭包(就像第一个代码片段一样),它是否是线程安全的?

0 个答案:

没有答案