我有一个带有循环的代码,如果它花费太多时间,我需要跳过一次迭代。
的例子:
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
的长度,如果超过条件则中断
最后打印出来