我試圖每秒運行三個函數(每個函數最多可能需要1秒鐘的時間)。然後,我想存儲每個函數的輸出,並將它們寫入單獨的文件。每秒運行多個函數,將結果寫入文件
目前我正在使用Timer
s來進行延遲處理。 (我可以繼承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])
的思考?
編輯:新增我自己的答案作爲一種可能性
+1這適用,因爲輸出是分開文件。如果它不平凡並且涉及輸出的組合,那麼在寫入之前,您將不得不等待所有排隊的項目完成。請務必在所獲取的項目上調用'task_done'。 – darvids0n 2012-01-16 04:08:01
好主意!隊列是線程安全的,比list.append(data)好得多 – 2012-01-16 04:08:11
我按照darvids0n的建議將調用添加到'task_done'。謝謝。 – srgerg 2012-01-16 04:18:09