如何在python中启动可执行文件而不阻塞python执行
在linux中,我有一个可执行文件,它应该像这样运行: /a.exe输入数据 我想在python脚本中启动这个可执行文件,但我不想阻止python代码的其余部分 我试过这样做,但是如何在python中启动可执行文件而不阻塞python执行,python,linux,subprocess,multiprocessing,Python,Linux,Subprocess,Multiprocessing,在linux中,我有一个可执行文件,它应该像这样运行: /a.exe输入数据 我想在python脚本中启动这个可执行文件,但我不想阻止python代码的其余部分 我试过这样做,但是 # launch sensor node def launchA(): subprocess.Popen(["Path/a.exe", inputdata]) if __name__ == '__main__': p = multiprocessing.Process(target=launchA,
# launch sensor node
def launchA():
subprocess.Popen(["Path/a.exe", inputdata])
if __name__ == '__main__':
p = multiprocessing.Process(target=launchA,args=())
p.start()
print("sensorlaunched")
但是,luanchA进程仍然阻止打印功能
我的代码出了什么问题?谢谢 您所做的纯粹是过火:您正在使用
多处理
创建一个流程,以管理使用子流程
创建的流程。只需单独使用子流程
:
p = subprocess.Popen(["Path/a.exe", inputdata])
现在,
p
是指正在运行的a.exe
进程的句柄,您的脚本可以继续执行它正在执行的操作。您在Linux二进制文件上使用了.exe
扩展吗?那是异端邪说!我只是厌倦了“p=subprocess.Popen([“Path/a.exe”,inputdata])”,但它仍然阻止了打印功能。。。a.exe抓取了终端,我看不到打印(“hello”)功能被执行…@XingFan:a.exe
,原始进程写入同一终端,但没有进程“抓取”它。将两个同时运行的进程写入同一终端肯定会以不确定的方式混合两个数据流,但这确实意味着原始进程块。谢谢但是我试图在命令中添加“&”,比如这个p=subprocess.Popen([“Path/a.exe”,inputdata],“&”)来释放终端,但是我仍然没有看到打印功能被执行………@XingFan:&
没有任何作用。没有变化的事实意味着问题不在于子流程
@XingFan:没有“释放终端”这样的事情。终端不属于任何进程。将随机的“&”
作为参数添加到Popen()
将导致错误。