Python subprocess.Popen没有给我正确的pid?

时间:2019-08-08 17:25:42

标签: python subprocess

看起来像job = subprocess.Popen,job.pid没有给出正确的PID,而是PID + 1似乎起作用

我检查了线程: Python subprocess.popen wrong pid python - subprocess.Popen().pid return the pid of the parent script

但他们都没有真正回答我的问题。

我的工作(据说“ PID + 1”的成功率为99%,我还没有失败,但感到有可能)代码如下:

def Running(PID):
    try:
        os.kill(PID, 0)
    except OSError:
        return False
    else:
        return True

job=subprocess.Popen('cfl3d_seq<cfl3d.inp &', shell=True)
Runs.append(int(job.pid)+1)
print(int(job.pid)+1)
print(Runs)
time.sleep(10)

while len(Runs)>=TotalRun:
    for run in Runs:
        if Running(run)==False:
            print('kill ', run)
            Runs.remove(run)
    time.sleep(60)

这在后台运行外部软件。有没有更好的清洁方法来获取正确的PID?

如果它本身正在运行python代码,还有什么更好的方法吗?

使用time.sleep()时我没有使用过任何派生线程,这会使外部cfl3d软件进入睡眠状态吗?

如果通过Popen()执行的是python代码,这会睡掉弹出的python吗?

非常感谢您!

0 个答案:

没有答案