在后台运行while循环作为子流程

时间:2019-08-31 10:13:44

标签: python multithreading terminal subprocess arguments

不幸的是,我的上一篇文章被标记为重复,并且我的问题没有解决。所以我不得不说一点不同。

在下面,您可以看到我的主文件(SP_Test.py),该文件调用另一个带参数的python脚本。

#!/usr/bin/python

import subprocess

channels = input("")

subprocess.call(['python', '/Users/christian/pyth/term/helloworld.py', str(channels)])

print("Hello")

在这里您可以看到我的处理文件,该文件被主文件调用并应在后台运行(原始文件连续处理音频输入)。

#!/usr/bin/python

import sys

print("Hello World!")
print(sys.argv[1])

while(1):
    x=1

现在的问题是,我想在我的主程序(SP_Test.py)继续运行的同时在后台运行while循环。到目前为止,它被卡在循环中并且不会再出现,因此它将永远不会显示“ Hello”。

我没有在该论坛中找到适合我的解决方案。所以请帮助我。谢谢。


PS:是否还可以在conda环境中从主文件调用“ helloworld.py”?

1 个答案:

答案 0 :(得分:0)

subprocess.call()将等待命令执行完毕,因此会阻塞您的程序。 相反,您想使用subprocess.Popen,它将在后台运行该程序。