Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
当我试图使用 kill() 杀死一个 greenlet 时,“block”参数默认为 True,
Greenlet.kill(self, exception, block, timeout)
医生说:
如果 block 是True(默认值),请等到 greenlet 死亡或可选超时到期。如果 block 是False,当前的 greenlet 不是计划外的。
如何正确理解这一点?谢谢
假设您有两个 greenletsA和B.
A
B
1)在B你里面打电话A.kill(block=True)。在上下文切换发生后,Python 立即跳转到A并在A. A可能会处理它,它可能会跳转到其他地方,可能会在杀死时发生超时,等等。
A.kill(block=True)
2)在B你里面打电话A.kill(block=False)。不会发生上下文切换。Bkill 后继续运行其他命令。但是,Kill 命令被安排触发,即一旦 Python 跳转到A它就会引发异常。
A.kill(block=False)
所以 AFAIK 的“阻止”只是意味着“现在进行切换”。