簡體   English   中英

為什么time.sleep完全停止執行?

[英]Why time.sleep stops execution altogether?

以下功能旨在使循環運行20分鍾,並處理SQL任務(如果有)。 為了避免在沒有任何要處理的內容時發生過多的SQL調用,在嘗試再次處理任務之前,它打算休眠5秒鍾:

def main():
    sql = 'some sql task here;'
    stop_time = datetime.today() + timedelta(minutes = 20)
    print('Started at ', datetime.now())
    print('Should stop at', stop_time)
    load_more_rows = True
    with ConnectionParameters.get_conn() as conn:
        while load_more_rows or (datetime.now() < stop_time):
            try:
                res = get_num_processed_batches(conn, sql)
                processed_batch = res > 0
            except Exception as ex:
                log_error(repr(ex))
                processed_batch = False
            if not processed_batch:
                print('Sleeping at ', datetime.now())
                time.sleep(seconds=5)
            load_more_rows = processed_batch
            print('Finished iteration at ', datetime.now())
    print('Stopped at ', datetime.now())

不幸的是,它沒有停止睡眠,醒來並繼續處理任務直到時間到了,而是完全停止了執行,如輸出所示:

('Started at ', datetime.datetime(2015, 3, 31, 17, 31, 6, 206652))
('Should stop at', datetime.datetime(2015, 3, 31, 17, 51, 6, 206630))
('Finished iteration at ', datetime.datetime(2015, 3, 31, 17, 31, 6, 356698))
('Finished iteration at ', datetime.datetime(2015, 3, 31, 17, 31, 6, 614349))
('Finished iteration at ', datetime.datetime(2015, 3, 31, 17, 31, 6, 638210))
('Finished iteration at ', datetime.datetime(2015, 3, 31, 17, 31, 6, 765645))
('Finished iteration at ', datetime.datetime(2015, 3, 31, 17, 31, 6, 885282))
('Finished iteration at ', datetime.datetime(2015, 3, 31, 17, 31, 7, 12109))
('Sleeping at ', datetime.datetime(2015, 3, 31, 17, 31, 7, 13803))

我究竟做錯了什么?

time.sleep不需要關鍵字參數seconds

time.sleep(5)

我不確定為什么它不會引發關於缺少必需參數的錯誤。

https://docs.python.org/2/library/time.html#time.sleep

>>> time.sleep(seconds=1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sleep() takes no keyword arguments
>>> time.sleep(1)
>>> "everything is fine"

暫無
暫無

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

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