import threading,gevent,gevent.monkey
class test(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
print 1
gevent.sleep(2)
print 2
gevent.monkey.patch_thread()
t=test()
t.start() 为什么‘打印2’没有运行,怎么办?
如果要下载文件,多线程和gevent,哪个更快?
发布于 2012-11-07 16:00:02
这是一个合理的问题。
这是因为在gevent中,只要主greenlet退出,程序就会退出。对于线程,Python等待所有线程完成。
您有两个选项:
t.join()。这将等待t完成。你需要对所有的非后台线程执行此操作。gevent.wait()。这将等待事件循环退出-这意味着所有的greenlet和线程。请注意,gevent.wait()仅在1.0 (download 1.0rc here)中可用。join在所有版本中都可用。
发布于 2012-10-30 01:14:47
为什么要在thread类继承器中使用gevent?工作示例:
>>> import threading, gevent, gevent.monkey
>>> gevent.monkey.patch_thread()
>>> def run(self):
... print 1
... gevent.sleep(2)
... print 2
...
>>> gevent.joinall([gevent.spawn(run, [])])
1
2
>>> https://stackoverflow.com/questions/13126254
复制相似问题