我试图每秒运行三个函数(每个函数最多可能需要1秒钟才能执行)。然后,我想存储每个函数的输出,并将它们写入单独的文件中。

目前,我正在使用Timer进行延迟处理。 (我可以继承Thread,但是对于这个简单的脚本来说,这有点复杂)

def main:
    for i in range(3):
        set_up_function(i)
        t = Timer(1, run_function, [i])
        t.start()
    time.sleep(100) # Without this, main thread exits

def run_function(i):
    t = Timer(1, run_function, [i])
    t.start()
    print function_with_delay(i)

处理来自function_with_delay的输出的最佳方法是什么?将结果附加到每个功能的全局列表中吗?

然后,我可以在主函数的末尾添加以下内容:
...
while True:
    time.sleep(30) # or in a try/except with a loop of 1 second sleeps so I can interrupt
    for i in range(3):
        save_to_disk(data[i])

有什么想法吗?

编辑:添加了我自己的答案作为可能

最佳答案

我相信python Queue模块正是针对这种情况而设计的。您可以执行以下操作,例如:

def main():
    q = Queue.Queue()
    for i in range(3):
        t = threading.Timer(1, run_function, [q, i])
        t.start()

    while True:
        item = q.get()
        save_to_disk(item)
        q.task_done()

def run_function(q, i):
    t = threading.Timer(1, run_function, [q, i])
    t.start()
    q.put(function_with_delay(i))

关于python - 每秒运行多个功能,将结果写入文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8875507/

10-09 02:23