我有一個帶有回圈的代碼,如果需要太多時間,我需要跳過迭代。
例子:
list = ['a', 'b', 'c', ......]
for x in list:
#do something that takes time
在我的代碼中,串列有幾個路徑。我遍歷該串列的每個路徑以在檔案中執行一些操作,但是有些檔案需要太長時間。我不希望腳本在路徑中停留超過半小時......如果執行它需要超過 30 分鐘,我希望它跳過該路徑并轉到串列中的下一個。
uj5u.com熱心網友回復:
我假設您的意思是,如果經過一定時間,您想跳出回圈。如果是這樣,請查看時間模塊。您可以使用那里的功能來記錄進入回圈之前的時間,然后在代碼中的適當位置,比較從開始時間的初始記錄開始的經過時間并相應地繼續
uj5u.com熱心網友回復:
我想出了這個解決方案:
import time
start_time = time.time()
#a lot of code in the middle
print(start_time)
list=['1', '2', '3', '4']
for i in list:
start_time = time.time()
while True:
print("hello world {}".format(i))
current_time = time.time()
elapsed_time = current_time - start_time
print(elapsed_time)
if elapsed_time > 3: #test for 3seconds
print("More than {} seconds".format(elapsed_time))
del elapsed_time
break
print("exited the loop")
uj5u.com熱心網友回復:
你可能會喜歡這段代碼
import pprint as p
llist = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
HashMap = {}
for i, x in enumerate(llist):
HashMap[x] = i
# Your condition
if len(HashMap) > 20:
break # You can do continue
p.pprint(HashMap, width = 200, sort_dicts = False)
解釋
進口pprint印刷精美
將 var 名稱從更改為list,llist因為我不想屏蔽內置函式
創建了一個字典HashMap來存盤專案的索引和專案
回圈llist使用enumerate()以獲取這些索引
回圈后的第一步是將專案附加到,HashMap以便我們保持計數
然后條件就來了......
然后檢查長度HashMap,如果超過條件則中斷
最后列印出來
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/467862.html
