(python)每x秒执行一次函数

时间:2015-11-25 10:17:29

标签: python multithreading

这是我每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()

1 个答案:

答案 0 :(得分:1)

使用Threading.Timer,你必须在每次到期时重新启动计时器 - 所以在执行定时器到期时调用的函数 - 代码中的m.getCost - 必须再次启动计时器。您可能希望定义一个包装函数来完成这项工作,以避免使用计时器东西污染m.getCost()。