当前位置: 首页 > 面试题库 >

Python:等待外部启动过程完成

刘兴修
2023-03-14
问题内容

标题中已经存在的问题-如何使python脚本等到通过os.system()调用启动的某个过程完成?例如类似的代码

    for i in range( 0, n ):
       os.system( 'someprog.exe %d' % i )

这将同时启动n次请求的进程,这可能会使我的PC有点汗水)

感谢您的任何建议。


问题答案:

os.system() 确实 等待其过程完成后才返回。

如果您看到它不等待,则您正在启动的进程很可能会自行分离以在后台运行。在这种情况下,子进程。Popen+ wait示例Dor提供了帮助。

旁注:如果您想要的只是subprocess.Popen +等待使用subprocess.call:

import subprocess
subprocess.call(('someprog.exe', str(i)))

确实与os.system()没什么不同,除了显式传递命令和参数而不是将其作为单个字符串传递。



 类似资料:
  • 这段代码立即在我的浏览器中播放第二个URL。我要代码等到第一个视频停止。所以我需要从页面上播放视频的时间,并在睡眠功能中设置它,所以我怎么做呢?或者有另一种方法。 提前谢谢。

  • 问题内容: 我正在通过chromewebdriver(windows)使用selenium和python来自动执行从不同页面下载大量文件的任务。我的代码可以运行,但是解决方案远非理想:下面的函数单击网站按钮,该按钮会启动Java脚本函数,该函数会生成PDF文件,然后下载该文件。 我必须使用静态等待才能等待下载完成(丑陋)。我无法检查文件系统以确认下载何时完成,因为我使用的是多线程(从不同页面下载很

  • Verticle部署是异步的,可能部署完成后才返回。 如果你想要部署完成后通知,您可以部署指定完成处理程序: vertx.deployVerticle("com.mycompany.MyOrderProcessorVerticle", res -> { if (res.succeeded()) { System.out.println("Deployment id is: " + re

  • 问题内容: 我有这个代码: 发生的是该文件在实际执行之前已删除。 这是因为文件仅包含本机系统调用吗?执行文件 后 如何删除?(我不知道文件的输出是什么,因为它是动态变化的)。 问题答案: 通过使用,您要求在后台启动批处理文件: 因此,您从Java()启动的进程将在后台进程完成之前返回。 删除命令以在前台运行批处理文件-然后,将等待批处理文件完成: 根据OP,重要的是要有可用的控制台窗口-这可以通过

  • 问题内容: 我有一个创建两个或多个子流程的主流程,我想让主流程等到所有子流程完成操作并退出吗? 问题答案: 一个对象有这个确切定义的方法:等待一个给定的子进程的完成(和,此外,对于重新调整它的退出状态)。 如果使用此方法,则可以防止进程僵尸闲逛太久。 (或者,您可以使用或来进行调用和等待。如果您不需要该进程的IO,那可能就足够了。但这可能不是一个选择,因为您的两个子进程似乎应该并行运行,而他们不会

  • 问题内容: 因此,我有一些代码等待X发生,然后创建一个线程并执行processEmail。 我正在寻找的是一种代码,即使processEmail在另一个线程中发生,代码也可以继续等待X,但是当前代码只是等待线程完成,然后再等待X再次发生。 编辑:仅供参考,我什么都不需要在下面的代码中进一步输出processEmail.main(),因此不需要我等待其输出。 由Jean提供的答案:移除main之后的