gpt4 book ai didi

Python 等待事件的其他方式

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

我希望我的程序等待,直到特定文件包含文本而不是空字符串。另一个程序将数据写入该文件。当我运行第一个程序时,由于 while 循环不断检查文件内容,我的计算机开始过热。除了这个循环我还能做什么?

最佳答案

更好的解决方案是从 Python 脚本中启动该过程:

from subprocess import call
retcode = call(['myprocess', 'arg1', 'arg2', 'argN'])

检查retcode是否为零,这意味着成功 - 您的进程成功运行,没有任何问题。您还可以使用 os.system 代替 subprocess.call。该过程完成后,您就会知道现在可以读取该文件。

为什么这个方法比监控文件更好?

  • 该过程可能会失败,并且您尝试读取的文件中可能没有输出。在这种情况下,你的进程会一次又一次地检查文件,寻找数据,这会浪费内核I/O操作时间。没有什么可以保证该过程始终成功。

  • 如果进程接收到 STOP 信号,则进程可以接收信号(即 STOPCONT) ,内核将停止该进程,并且您可能无法从输出文件中读取任何内容,特别是如果您打算一次读取所有数据,例如在对文件进行排序时。一旦进程接收到 CONT 信号,进程就会重新开始。基本上,这意味着您的 Python 脚本将在进程停止时尝试同时从文件中读取。

此方法的缺点是,在 Python 脚本处理文件的输出之前,需要先完成该过程。 subprocess.call 会阻塞,在生成的进程首先完成之前,Python 解释器不会执行下一行,您可以使用非阻塞的 subprocess.Popen 。更好的是,如果可能的话,将进程的输出重定向到 stdout,并使用 Popen 从 stdout 读取进程的输出,然后将 Python 脚本的输出写入文件。

关于Python 等待事件的其他方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44809252/

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