python - 等待多个 Python 进程在 Windows 7 CMD 中完成

标签 python windows cmd parallel-processing

我正在尝试在 Windows 7(和 10)中并行运行多个 Python 脚本。我正在从另一个 Python 脚本运行它们,该脚本对脚本正在编辑的文件执行更多功能。我希望外部脚本等到其他脚本运行完毕。我试过 start/w,但这让每个脚本在关闭控制台窗口之前等待。

基本上我想要做的是让 Python 等到 3 个进程完成。最后一个脚本只是一个 print("done"),对我来说毫无意义。这对我来说很重要,因为我需要用 30 个进程来解决同样的问题。(在服务器上,有足够的可用线程。)

这是我要运行的 CMD 命令。

os.system("start python node1.py & start python node2.py & start python node3.py && start /w printstatement.py")

有什么建议吗?

最佳答案

使用 subprocess.Popen 而不是 os.system。您将获得 3 个可以等待的 Popen 实例。例如:

import subprocess

procs = [subprocess.Popen(['python', 'node{}.py'.format(n)]) 
            for n in range(1, 4)]

retcodes = [p.wait() for p in procs]

如果您想要单独的控制台窗口,例如 CMD 的 start 命令的工作方式,请将选项 creationflags=subprocess.CREATE_NEW_CONSOLE 添加到 Popen调用(仅限 Windows)。如果您想要不创建窗口的单独控制台,请使用 creationflags=CREATE_NO_WINDOW (0x08000000)。在这种情况下,它们仍然具有控制台标准 I/O;它只是没有呈现到窗口。

关于python - 等待多个 Python 进程在 Windows 7 CMD 中完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48112191/

相关文章:

java - Jython 有没有好的 NumPy 克隆?

python - 类型错误 : 'list' object is not callable when web scraping to append lists/values to a column in csv file

python - pyttsx pyttsx.init() 不工作

windows - 如何从命令行使用 svn+ssh 和 Tortoise SVN

windows - robocopy 导致成功退出(1)

python - Python 中的静态代码分析?

python - 在 os.startfile() 中运行时隐藏控制台?

windows - 以任何首选语言关闭连接在 LAN 中的远程计算机

windows - 批处理文件删除早于 N 天的文件并将结果保存为文本文件

java - 如何通过java执行cmd命令