如何在Python中跳过循环的迭代一段时间后?



我有一个带有循环的代码,如果它花费太多时间,我需要跳过一次迭代。

的例子:

list = ['a', 'b', 'c', ......]
for x in list:
#do something that takes time

在我的代码中,列表有几个路径。我循环遍历列表的每个路径,在文件中执行一些操作,但有些文件花费的时间太长了。我不希望剧本停滞不前超过半个小时……如果执行它的时间超过30分钟,我希望它跳过该路径并进入列表中的下一个路径。

我假设您的意思是,如果已经过了一定的时间,您希望跳出循环。如果是这样,请查看time模块。您可以使用其中的特性来记录进入循环之前的时间,然后在代码中的适当位置,比较从开始时间的初始记录经过的时间,并相应地继续

我想出了这个解决方案:


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")

您可能会喜欢下面的代码

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打印精美

将变量名称从list更改为llist,因为我不想屏蔽内置

创建一个字典HashMap来存储项和项的索引

llist上循环使用enumerate()来获取这些索引

循环后的第一步是将项追加到HashMap,这样我们就保持了计数

那么情况就会出现.....

然后检查HashMap的长度,如果超过条件则中断

最后打印出来

最新更新