在一个单独的线程中从python启动csh脚本

时间:2015-07-30 22:02:34

标签: python subprocess csh

我试图在一个单独的线程中运行python的csh脚本,即我不想等待脚本完成。

我正在尝试这样做:

subprocess.call(['my_script.csh -w switch'])
print 'Job spawned..'

问题是在csh脚本完成后正在打印消息。有没有办法产生csh作业并继续python

1 个答案:

答案 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()方法告诉它,否则它不会等待该过程完成。