在这篇由David Mertz撰写的关于PyCon 2012的协程、线程等的talk中,他展示了一个使用协程(生成器)替代线程的示例:
幻灯片内容如下:
A scheduler for weightless threads won't switch to a specific place, but will round-robin or the like:
def thread_scheduler(generators):
thread_data = defaultdict(list)
threads = [g() for g in generators()]
while True:
try:
for t in threads:
data = thread_data[t.__name__]
consumer, data = t.send(data)
thread_data[consumer].append(data)
except StopIteration:
break
Here consumer threads cannot be switched into directly, but once reached will get injected data.
1)generators()
是打字错误吗?很可能generator
是一个列表,对吗?(我知道你可以写一个函数,给你一些iterable,里面有生成器;但为了简单起见……)
2)当有这么多生成器被循环时,为什么代码只捕获一个错误?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐