看起来像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吗?
非常感谢您!