我并不完全清楚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
但如果它被包装在一个函数中并被定义为一个闭包(就像第一个代码片段一样),它是否是线程安全的?