我试图在一个单独的线程中运行python的csh脚本,即我不想等待脚本完成。
我正在尝试这样做:
subprocess.call(['my_script.csh -w switch'])
print 'Job spawned..'
问题是在csh脚本完成后正在打印消息。有没有办法产生csh作业并继续python
答案 0 :(得分:1)
您正在寻找subprocess.Popen
:
from subprocess import Popen
process = Popen(['sleep', '5'])
print 'job spawned'
process.wait()
print 'job complete'
为了清理你的术语,一个"线程"是一个程序中的执行线,而一个"过程"是一个正在运行的程序(可能有多个线程)。当你启动一个程序时,它几乎总是一个单独的进程,这意味着它独立和异步地运行(不在同一个线程上)。这里的问题是subprocess.call
是为最常见的用例编写的,您可能希望在继续之前等待被调用的进程完成。 subprocess.Popen
是一个为您提供更多权力的课程。除非您使用wait()
方法告诉它,否则它不会等待该过程完成。