【发布时间】:2012-08-03 10:27:25
【问题描述】:
我的理解是,一旦我调用了 gevent.monkey.patch_all(),标准线程模块就被修改为使用 greenlets 而不是 python 线程。因此,如果我根据 python 线程、锁、信号量等编写我的应用程序,然后调用 patch_all,我是否获得了 gevent 的全部好处,或者与使用显式 gevent 等效项相比,我是否失去了一些东西?
这个问题背后的动机是我正在编写一个使用一些线程/greenlets的模块,我正在决定在使用gevent和使用线程之间进行显式切换是否有用,或者我是否可以只使用线程+ patch_all 不会丢失任何东西。
把它放在代码中,这是……
def myfunction():
print 'ohai'
Greenlet.spawn(myfunction)
...和这个有什么不同吗?
import gevent.monkey
gevent.monkey.patch_all()
def mythread(threading.Thread):
def run(self):
print 'ohai'
mythread().start()
【问题讨论】:
标签: python gevent python-multithreading