0

subprocess.Popen(someexternalCommand) 创建并运行了 5 个进程。命令按顺序启动很重要,即第二个进程必须在第一个进程启动并运行之前才能启动。使用了以下代码:

proc1 = TrafficGenUtils.Popen(someexternalCommand)
time.sleep(10)
proc2 = TrafficGenUtils.Popen(someexternalCommand)
time.sleep(10)
...

当进程数为 3 时,执行顺序得以维持,但 5 进程几乎从未维护,并且将睡眠时间增加到 60 秒也无济于事。如何强制 Popen 进程的执行是顺序的。我的代码不起作用的原因是否与 Popen 依赖操作系统来创建进程但操作系统随时启动它们的事实有关?我正在使用 Windows 8 和 python 2.7

4

1 回答 1

1

Popen启动一个新进程,因此从那一刻起由操作系统来安排其运行时间。您不仅不能假设一个进程将在另一个进程之前运行,而且您甚至不能假设您的父进程会将执行权交给子进程,实际上可能不会。

为了创建顺序执行,您可以使用proc1.wait()停止父进程,直到子进程完成其执行。通过这种方式,您可以保证进程按顺序运行,因为父进程在子进程结束之前不会继续运行,因此不会产生其他子进程。

Python 文档中阅读更多内容。

于 2013-11-02T16:03:41.723 回答