gpt4 book ai didi

eventlet - greenthread.sleep 是做什么的?

转载 作者:行者123 更新时间:2023-12-04 15:21:34 27 4
gpt4 key购买 nike

我对 eventlet 很陌生,对 sleep() 有一些疑问

我用一小段代码进行了测试。

一开始我spawn了3个greenthread,然后调用了greenthread.sleep(0),然后这3个greenthread都来执行里面的函数了。怎么回事?

sleep() 是否意味着执行所有生成的 greenthread?我们传入的参数0是什么意思?

代码如下:

import eventlet
from eventlet import greenthread
from eventlet import event
evt = event.Event()

def func1():
print "starting func1"
evt.wait()
print "stopping func1"

def func2():
print "starting func2"
evt.wait()
print "stopping func2"

def func3():
evt.send()

gt1 = greenthread.spawn(func1)
gt2 = greenthread.spawn(func2)
gt3 = greenthread.spawn(func3)
greenthread.sleep(0)

最佳答案

这是一个很好的问题,它应该在 Eventlet 文档中占有特殊的位置。

eventlet.sleep(0) 将调用 greenthread 重新安排到运行队列的末尾。如果有任何其他 greenthreads 等待运行,它们将立即执行。

Eventlet 的当前实现细节有一定的保证,如果您调用 sleep,调用 greenthread 将不会继续,直到所有其他准备好执行的 greenthread 完成或进入类似的等待状态。从实现细节开始,我们现在将其保留为公共(public) API:调用 sleep(0) 让其他人运行。

关于eventlet - greenthread.sleep 是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27552271/

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