这是我每1秒执行一次功能的源代码
买,它只执行一次。
简而言之,我希望每秒从命名管道输出中获取#
行
对此问题有任何建议吗?
提前感谢您的帮助
class Monitor:
def __init__(self, namedpipe, name):
self.namedpipe = namedpipe
self.name = name
self.count = 0
def run(self):
print self.name+" start run"
while True:
line = self.namedpipe.readline()
self.count = self.count+1
def getCost(self):
print "Hi"
while True:
line = monitor.readline()
line = line.strip()
if not line:
ans =raw_input('stop?')
if ans=='y': break
monitorList = open(line, 'r')
m = Monitor(monitorList, line)
thread.start_new_thread(m.run, ())
time.sleep(1)
threading.Timer(0.1, m.getCost).start()
答案 0 :(得分:1)
使用Threading.Timer,你必须在每次到期时重新启动计时器 - 所以在执行定时器到期时调用的函数 - 代码中的m.getCost - 必须再次启动计时器。您可能希望定义一个包装函数来完成这项工作,以避免使用计时器东西污染m.getCost()。