我正在使用subprocess.Popen函数来运行命令行。不必使用Popen.wait(),我想在完成使用Popen.poll()后检查子进程。有关如何做到这一点的任何建议吗?
import subprocess
job = subprocess.Popen('command line', shell = True)
print(job.poll())
实际上,我在子进程启动之前打印了job.poll()。我希望它等到它结束。我不想使用等待,因为在该过程结束之前,其余的用户界面将变得无法使用。这是在PyQt4中。
答案 0 :(得分:0)
正如Python - wait on a condition without high cpu usage所说,现在只有两种方法可以等待:轮询或设置/使用通知系统。
如果它的用户界面 - 你没有忘记你总是有一个通知系统 - 消息队列?
此外,您始终可以(并且,如果它的UI,应始终)在工作线程中执行任何耗时的任务。如果是哪种情况,您可以使用同步呼叫。