簡體   English   中英

如何在給定時間后結束 for 循環

[英]How to end a for loop after a given amount of time

我在一個循環中為許多對象執行我的代碼,似乎這個過程的時間太多了。

例如,我想添加一個在 30 分鍾后停止執行的條件。 應該怎么做? 我是否需要另一個 for 循環和timeit模塊,或者它可以更容易完成?

您可以實施開始時間並在開始時間過去 30 分鍾后停止執行

from datetime import datetime, timedelta
starting_time = datetime.now()
for item in something:
    #do something
    if (datetime.now()- starting_time) //timedelta(minutes=1) >= 30:
        break

你可以這樣做:

import time

time_limit = 60 * 30 # Number of seconds in one minute
t0 = time.time()
for obj in list_of_objects_to_iterate_over:
    do_some_stuff(obj)   
    if time.time() - t0 > time_limit:
        break  

每當在您設置的時間限制之后達到迭代結束時, break語句將退出循環。

所以這是我的變體如何做到這一點(假設我們通過 sql 響應收集數據):

  for i in items:
    if total_records % 100 == 0:
        logger.warning(
            "Processed {} items in {} ms".format(total_records, int(time.time() * 1000) - start_time_ms))
    if int(time.time() * 1000) - start_time_ms > 3600000:
        cur.close()
        conn.close()
        return total_records

暫無
暫無

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

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