gpt4 book ai didi

python - 实现非阻塞等待的最佳方式?

转载 作者:太空狗 更新时间:2023-10-29 18:27:00 28 4
gpt4 key购买 nike

在 python 中,如果我想让一个进程或线程永远运行,我通常可以用一个空的 while 循环来做到这一点:

while 1:
pass

然而,这会消耗不公平数量的 CPU 进程。添加一个简短的 sleep 会起作用:

import time
while 1:
time.sleep(0.01)

有没有最好或更干净的方法来做到这一点?

最佳答案

考虑到相当奇怪的要求(一个不使用太多 CPU 就永远运行的进程),这是相当紧凑的:

import threading
dummy_event = threading.Event()
dummy_event.wait()

...但是,我担心我会屈服于解决 Y 而不是 X 的诱惑。

除此之外,如果您的平台不提供threading 模块,这将不起作用。如果您尝试替换 dummy_threading 模块,dummy_event.wait() 会立即返回。

更新:如果您只是为了子进程而让父进程继续运行,您可以使用 wait() Popen objects 上的方法,或 join() Process 上的方法对象。这两种方法都将无限期阻塞,直到子进程结束。如果您正在使用其他一些子流程 API,那么肯定会有等效的功能可用。如果不是,获取进程的 PID 并使用 os.waitpid() .

关于python - 实现非阻塞等待的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3226628/

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