2011-06-30 37 views
5

协程是简化并发编程的绝佳范例。大多数情况下,并发任务很容易并行化。在Go语言中,很容易使用goroutines来执行并行任务。有没有办法在Python中做同样的事情,例如使用协程来创建进程并同步它们?在Python中使用协程进行并行编程

回答

3

是的,Python支持库和通过生成器的协同程序:例如,请参阅Greenlet库。此外,还有一个名为Stackless Python的衍生产品,它内置了对若干并发编程功能的支持,例如微线程和通道。

请注意,在默认CPython中,全局解释器锁将只允许一个线程立即运行,这可能是一个问题。

2

如果你想使用标准的python解释器,greenlet库是要走的路。

至于GIL,它不应该是一个协程的问题。您可以将greenlet协程模型视为在一个内核线程内运行的多个轻量级用户空间“线程”。所以从GIL和OS的角度来看,它仍然是单线程的。