taz*_*zim 18 python django python-multiprocessing
我正在使用python的多处理模块来生成新进程
如下 :
import multiprocessing
import os
d = multiprocessing.Process(target=os.system,args=('iostat 2 > a.txt',))
d.start()
Run Code Online (Sandbox Code Playgroud)
我想获取iostat命令的pid或使用多处理模块执行的命令
当我执行:
d.pid
Run Code Online (Sandbox Code Playgroud)
它给了我运行此命令的子shell的pid.
任何帮助都是有价值的.
提前致谢
zha*_*nxw 31
与@rakslice类似,您可以使用psutil:
import signal, psutil
def kill_child_processes(parent_pid, sig=signal.SIGTERM):
try:
parent = psutil.Process(parent_pid)
except psutil.NoSuchProcess:
return
children = parent.children(recursive=True)
for process in children:
process.send_signal(sig)
Run Code Online (Sandbox Code Playgroud)
由于您似乎使用的是Unix,因此您可以使用快速ps命令来获取子进程的详细信息,就像我在此处所做的那样(这是特定于Linux的):
import subprocess, os, signal
def kill_child_processes(parent_pid, sig=signal.SIGTERM):
ps_command = subprocess.Popen("ps -o pid --ppid %d --noheaders" % parent_pid, shell=True, stdout=subprocess.PIPE)
ps_output = ps_command.stdout.read()
retcode = ps_command.wait()
assert retcode == 0, "ps command returned %d" % retcode
for pid_str in ps_output.split("\n")[:-1]:
os.kill(int(pid_str), sig)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28894 次 |
| 最近记录: |