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)