Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中启动可执行文件而不阻塞python执行_Python_Linux_Subprocess_Multiprocessing - Fatal编程技术网

如何在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,

在linux中,我有一个可执行文件,它应该像这样运行: /a.exe输入数据

我想在python脚本中启动这个可执行文件,但我不想阻止python代码的其余部分

我试过这样做,但是

# 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()
将导致错误。