每y秒运行python子进程x秒

man*_*off 2 python sleep subprocess wait

我想从Python中控制一个bash程序.我想每隔x秒运行一次外部命令,持续y秒,然后在y秒后将其命中.我在线程,睡眠和等待等方面遇到了一些麻烦,我想知道是否有人可以发布一个简单的例子.

例如,从CLI可以使用

./foo.py --runfor=10 --runevery=60
Run Code Online (Sandbox Code Playgroud)

意思foo.py是每60秒运行一次10秒(而不是60秒).如果它关闭一秒钟或几分之一秒即可.我可以通过生成一个阻塞的进程,然后做一些数学来设置计时器来做到这一点,但我认为线程可能有一个更优雅的方式.

小智 6

这有帮助吗?

import threading
import subprocess
import time

class IntervalRunner(threading.Thread):
    def __init__(self, seconds):
        self.seconds = seconds
        threading.Thread.__init__(self)

    def run(self):
        while True:
            p = subprocess.Popen('ls -la'.split(), shell=False,
                                 stdout=subprocess.PIPE,
                                 stderr=subprocess.PIPE)

            stdout, stderr = p.communicate()
            print stdout
            time.sleep(self.seconds)

runner = IntervalRunner(10)
runner.start()
runner.join()
Run Code Online (Sandbox Code Playgroud)