协程是简化并发编程的一个很好的范例。大多数情况下,并发任务很容易并行化。在Go语言中,使用goroutines执行并行任务是很容易的。有没有办法在Python中做同样的事情,例如使用协程来创建进程并同步它们?
发布于 2011-06-30 08:40:17
是的,Python在库中和通过生成器支持协程:例如,请参阅Greenlet库。此外,还有一个名为Stackless Python的派生程序,它内置了对几个并发编程特性的支持,比如微线程和通道。
请注意,在默认的CPython中,全局解释器锁一次只允许一个线程运行,这可能是一个问题。
发布于 2011-06-30 17:31:25
如果你想使用标准的python解释器,greenlet库是个不错的选择。
至于GIL,这对于协程来说应该不是问题。您可以将greenlet协程模型视为在一个内核线程内运行的多个轻量级用户空间“线程”。所以从GIL和OS的角度来看,它仍然是单线程的。
https://stackoverflow.com/questions/6528789
复制相似问题