如何在 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")