gpt4 book ai didi

python - Python 中 gevent.sleep() 和 time.sleep() 的区别

转载 作者:太空宇宙 更新时间:2023-11-04 09:31:57 27 4
gpt4 key购买 nike

Python 中的gevent.sleep()time.sleep() 有什么区别?什么时候使用 gevent.sleep()time.sleep()

最佳答案

(回想一下,gevent 在单个 Python 线程上运行多个 greenlet,协同多路复用它们以执行协同多任务处理,在它们之间切换,就像它们会阻塞 IO 一样。)

gevent.sleep() 会将当前的 greenlet 交给 gevent hub,允许其他 greenlet 运行。 time.sleep() 不会屈服于 hub;它将简单地挂起整个当前线程和可能希望在其上运行的所有 greenlet。

另一方面,time.sleep 将释放 Python GIL 并允许其他 Python 线程有机会运行(但仍会阻塞调用线程上的所有 greenlet),而 gevent. sleep 不会释放 GIL(除非没有其他 greenlets 准备好在调用线程上运行)。

如果您使用 gevent.monkey.patch_all() 对您的程序进行了猴子修补(足够早),那么 time.sleep 将简单地成为 的别名gevent.sleep 和没有区别。

在使用 gevent 的程序中,通常建议使用 monkey patching 或明确使用 gevent.sleep 而不是 time.sleep,否则您将无法获得全部好处合作小绿叶。

the introductory gevent documentation 中提供了更多详细信息,特别是有关事件循环、协作式多任务处理和伪线程 (greenlet) 的部分。

关于python - Python 中 gevent.sleep() 和 time.sleep() 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55396675/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com