如何在不同的线程上运行不同的进程并将输出输出到第一个线程?蟒蛇

时间:2016-02-10 18:06:44

标签: android python multithreading

我希望从这个脚本运行另一个python脚本(scriptA.py) 我试过了 process = subprocess.popen(cmd, stdout=subprocess.PIPE)然后在输出行上显示..

并尝试了这个解决方案 https://gist.github.com/kirpit/1306188

但不确定如何实现它..

我想使用主文件中的代码打开scriptA.py(subprocess.popen等) 但要在主文件的另一个线程上打开它..因为它们都需要并行执行..

scriptA.py将从Android设备中提取信息.. SM将根据scriptA.py ..

的输出向同一设备发出命令

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:1)

默认情况下,subprocess.Popen在新进程中运行子程序。所以这根本不会阻止你的主要过程。

childProc = subprocess.Popen(cmd ..)

while True:
    childProc.poll() # to see if it has finished 
    if childProc.returncode:
        break # Finished
    # communicate somedata and read stdout and stderrs
    outs, errs = childProc.communicate(input="somedata")

PS:无限循环仅用于呈现概念

答案 1 :(得分:1)

首先我读到了: What is the difference between a process and a thread?

您需要确定它是您需要的线程还是进程。 如果你真的想要一个进程,你需要生成一个子进程,然后等待它结束并读取输出。 这可能有所帮助: wait process until all subprocess finish?