如何在 Python 一段时间后跳过循环迭代?
How to skip an iteration of a loop after some time in Python?
我有一个带有循环的代码,如果它花费太多时间,我需要跳过一个迭代。
示例:
list = ['a', 'b', 'c', ......]
for x in list:
#do something that takes time
在我的代码中,列表有多个路径。
我遍历该列表的每个路径以在文件中执行一些操作,但有些文件花费的时间太长。我不希望脚本在路径中停留超过半小时...如果执行它需要超过 30 分钟,我希望它跳过该路径并转到列表中的下一个。
我假设你的意思是你想在经过一定时间后跳出循环。如果是这样,请查看 time 模块。您可以使用那里的功能在进入循环之前记下时间,然后在代码中的适当位置比较开始时间的初始记录的经过时间并相应地继续
您可能会喜欢这个代码
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
因为我不想屏蔽 built-ins
创建了一个字典HashMap
来存储项目的索引和项目
使用 enumerate()
在 llist
上循环以获取这些索引
循环后的第一步是将项目附加到 HashMap
以便我们保留 count
那么条件就来了.....
然后检查HashMap
的长度,如果超过条件则中断
终于打印出来了
我想到了这个解决方案:
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")
我有一个带有循环的代码,如果它花费太多时间,我需要跳过一个迭代。
示例:
list = ['a', 'b', 'c', ......]
for x in list:
#do something that takes time
在我的代码中,列表有多个路径。 我遍历该列表的每个路径以在文件中执行一些操作,但有些文件花费的时间太长。我不希望脚本在路径中停留超过半小时...如果执行它需要超过 30 分钟,我希望它跳过该路径并转到列表中的下一个。
我假设你的意思是你想在经过一定时间后跳出循环。如果是这样,请查看 time 模块。您可以使用那里的功能在进入循环之前记下时间,然后在代码中的适当位置比较开始时间的初始记录的经过时间并相应地继续
您可能会喜欢这个代码
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
因为我不想屏蔽 built-ins
创建了一个字典HashMap
来存储项目的索引和项目
使用 enumerate()
在 llist
上循环以获取这些索引
循环后的第一步是将项目附加到 HashMap
以便我们保留 count
那么条件就来了.....
然后检查HashMap
的长度,如果超过条件则中断
终于打印出来了
我想到了这个解决方案:
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")