添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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

1 人关注

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

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

在我的代码中,这个列表有几个路径。 我在这个列表中的每一个路径中循环,在文件中做一些动作,但是有些文件需要太长的时间。我不希望脚本在一个路径上停留超过半小时......如果执行的时间超过30分钟,我希望它跳过这个路径,转到列表中的下一个。

3 个评论
请详细说明您的要求。替换代码0】在处理时有什么问题,需要更多时间?
这是否回答了你的问题? 函数调用的超时
@Rohit Babu,这只是一个带有路径的列表。我循环浏览该列表中的每个路径,在文件中做一些操作,但有一些文件花费的时间太长。我不希望经文在一个路径上停留超过半小时......。如果超过30分钟,我希望它跳过这个路径,转到下一个。
python
loops
for-loop
timeout
Catarina Ribeiro
Catarina Ribeiro
发布于 2022-04-27
3 个回答
Vlad
Vlad
发布于 2022-04-27
已采纳
0 人赞同

我想你的意思是,如果过了一定的时间,你想跳出循环。如果是这样,请看一下 time 模块。你可以使用那里的功能来记录你进入循环之前的时间,然后在代码的适当位置,比较从你最初记录的开始时间所经过的时间,并相应地继续下去。

Catarina Ribeiro
Catarina Ribeiro
发布于 2022-04-27
0 人赞同

我想出了这个解决方案。

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")
Aadesh Gurav
Aadesh Gurav
发布于 2022-04-27
0 人赞同

You might like this code

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来存储项目和项目的索引。