簡體   English   中英

Threading.Timer時間間隔隨機

[英]Threading.timer intervals random

我最終試圖讓多個threading.timer線程以不同的等待時間運行,但是我很難使甚至只有一個基於單個變量的線程都能正常運行。

我添加了一些行來嘗試消除處理時間的漂移,但是仍然無法獲得可預測的結果。 當我運行此腳本時:

import threading
import datetime
import time

def foo():
    print datetime.datetime.now()

print datetime.datetime.now()

iterations = 10

wait = 1

thread = None

next_call = time.time()

while iterations > 0:
    if thread == None or thread.is_alive() == False:
        next_call = next_call + wait
        thread = threading.Timer(next_call - time.time(), foo)
        thread.start()
        iterations -= 1

我得到以下輸出:

2015-08-04 16:46:17.606658
2015-08-04 16:46:18.656710
2015-08-04 16:46:19.607990
2015-08-04 16:46:20.654599
2015-08-04 16:46:21.626649
2015-08-04 16:46:22.753762
2015-08-04 16:46:23.610284
2015-08-04 16:46:24.729185
2015-08-04 16:46:25.609802
2015-08-04 16:46:26.608769
2015-08-04 16:46:27.610249

在計時器功能等待的時間上,這似乎具有不確定性的隨機模式。 有什么辦法可以確保該功能等待正確的時間嗎?

您可能需要嘗試其他一些機器/配置。

C:\bin\Python27\python.exe C:/www/wsgi/mysite/mysite/test.py
2015-08-04 20:24:36.491000
2015-08-04 20:24:37.492000
2015-08-04 20:24:38.491000
2015-08-04 20:24:39.491000
2015-08-04 20:24:40.491000
2015-08-04 20:24:41.491000
2015-08-04 20:24:42.491000
2015-08-04 20:24:43.491000
2015-08-04 20:24:44.491000
2015-08-04 20:24:45.491000
2015-08-04 20:24:46.491000

Process finished with exit code 0

那就是Windows 7,PyCharm 4.5.1,python 2.7.9,全部為64位

如果您正在尋找每個線程之間相差一秒的時間,這就是文檔必須說的:

引用[Python 3]( https://docs.python.org/3/library/threading.html#timer-objects

計時器在執行其操作之前將等待的時間間隔可能與用戶指定的時間間隔不完全相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM