Popen在错误的时间执行

时间:2019-07-15 03:16:12

标签: python python-3.x subprocess popen

我正在编写一个python脚本,当我运行代码时,运行子流程之后的所有代码都在子流程本身之前执行。因此,例如,这里的程序将在子进程之前运行print(“ blahblafkenrferkfnrnkr”)。

如何做到这一点,以便程序在print("blahblafkenrferkfnrnkr")执行subprocess.Popen("timeout 60 python2 script.py", shell=True, executable="/bin/bash")后运行(for 60 seconds as I am trying to do)

print("blahblh")

subprocess.Popen("timeout 60 python2 script.py", shell=True, executable="/bin/bash")

print("blahblafkenrferkfnrnkr")

1 个答案:

答案 0 :(得分:0)

Popen启动一个进程以在后台执行,而您不必等待它完成。要么:

  1. 使用等待您的Popen的高级包装之一(例如,默认情况下为subprocess.runsubprocess.check*系列之一)
  2. 存储生成的过程对象并在其上调用waitcommunicate也可以,但是由于您没有发送/捕获输入/输出,因此没有必要)

第2个示例就是:

print("blahblh")

proc = subprocess.Popen("timeout 60 python2 script.py", shell=True, executable="/bin/bash")
proc.wait()

print("blahblafkenrferkfnrnkr")