有时候希望子进程能按需运行,就要用到本文说的方法了。
比如按快捷键就暂停子进程,再按快捷键又恢复子进程。整个过程并不是结束子进程后又启动子进程,只是挂起子进程,子进程恢复后又能继续之前的工作。
总之这个在实际中是非常有用的和实用的。
关键代码:
import psutil
proc = psutil.Process(pid) #传入子进程的pid,这里的pid用子进程的pid替换
proc.suspend() #暂停子进程
下面是完整代码示例:
from multiprocessing import Process
import time
import psutil
def run_proc():
for i in range(20):
print('我是子进程,我正在运行中')
time.sleep(3)
if __name__=='__main__':
#创建并启动一个子进程并获取该子进程的pid以便进行后续测试
p = Process(target=run_proc)
p.start()
pid = p.pid
#-------分隔线-------
#测试暂停子进程
time.sleep(9)
proc = psutil.Process(pid) #传入任意子进程的pid
proc.suspend() #暂停子进程
print('子进程暂停运行')
time.sleep(9)
proc.resume() #恢复子进程
print('\n子进程已恢复运行')