python – 如何让子进程每5秒暂停执行一次外部程序?

给定一个外部程序,本例中是python target.py:

target.py

import time, itertools
A = itertools.count()
while True:
    time.sleep(.1)
    print A.next()

我正在寻找一种运行命令的方法,我们可以假设除了启动和停止之外我无法控制5秒钟.那时,我想暂停执行(类似于linux上的control-Z,这是我的目标平台),运行一些内部代码然后继续执行子进程.到目前为止我已经有了

reader.py

import subprocess, signal, time

cmd = "python target.py"
P = subprocess.Popen(cmd,shell=True)

while True:
   time.sleep(5)
   signal.pause(P)  # Not the correct way to suspend P
   print "doing something"
   signal.wakeup(P) # What is called here?
最佳答案
由于您使用的是Linux,因此可以使用以下reader.py:

import subprocess, signal, time, os

cmd = "python target.py"
P = subprocess.Popen(cmd,shell=True)

while True:
   time.sleep(5)
   os.kill(P.pid, signal.SIGSTOP)
   print "doing something"
   os.kill(P.pid, signal.SIGCONT)

转载注明原文:python – 如何让子进程每5秒暂停执行一次外部程序? - 代码日志