在执行的程序完成之前,如何在程序中执行程序而不会阻塞?
我试过了:
os.system()
但它会停止我的程序,直到执行的程序停止/关闭。有没有办法让我的程序在执行外部程序后继续运行?
答案 0 :(得分:11)
考虑使用子流程模块。
subprocess 会生成一个运行外部应用程序的新进程。您的应用程序在另一个应用程序运行时继续执行。
答案 1 :(得分:4)
你想要subprocess
。
答案 2 :(得分:2)
您可以使用子进程模块,但os.system也可以使用。它通过一个shell工作,所以你只需要放一个'&'在你的字符串的末尾。就像在交互式shell中一样,它将在后台运行。
但是,如果需要从中获取某种输出,则很可能需要使用子进程模块。
答案 3 :(得分:1)
您可以使用subprocess
:
import subprocess
import codecs
# start 'yourexecutable' with some parameters
# and throw the output away
with codecs.open(os.devnull, 'wb', encoding='utf8') as devnull:
subprocess.check_call(["yourexecutable",
"-param",
"value"],
stdout=devnull, stderr=subprocess.STDOUT
)