我想循环一组文件,并对每个文件执行"runthingy()"中指定的操作。但是,由于此操作在某些文件上卡住,导致整个程序停止,因此如果完成此特定文件的时间超过120秒,我希望跳过它。我使用的是windows,这就是signal.sigalarm不可用的原因,所以我使用stopit库(https://pypi.org/project/stopit/)。以下示例代码将在3秒后中止while循环和打印超时:

with stopit.ThreadingTimeout(3) as to_ctx_mrg:

while(True):

continue

if to_ctx_mrg.state == to_ctx_mrg.TIMED_OUT:

print("Time out")

但是,如果runthingy()函数被卡住/需要很长时间才能完成,则在此上下文中使用它将永远不会打印超时:

for filename in os.listdir(os.getcwd()+"\\files\"):

with stopit.ThreadingTimeout(120) as to_ctx_mrg:

runthingy(filename)

if to_ctx_mrg.state == to_ctx_mrg.TIMED_OUT:

print("Time out")

continue

我对您正在使用的库没有经验,但它说它会在超时线程中引发异步异常。

问题是为什么你的函数会被"卡住"?python解释器只会检测到在该线程中解释python指令时引发了异常。如果函数坚持的原因是它发出了一个尚未返回的C调用,那么其他的python线程可能仍然可以运行,但它们不能中断远程线程。

您需要更仔细地研究一下为什么"runthingy()"块。它是从套接字读取数据,还是等待文件锁定?如果该块的调用有一个可选的超时,那么请确保将超时参数设置得相当低:即使代码只是在超时后重试调用,它至少给了Python解释器一个进入并中止进程的机会。

更好的是,如果您能找出函数为什么会卡住,那么您就可以修复底层问题,而不是应用蛮力超时。

python循环怎么跳过开始循环,如果循环内部调用的函数执行时间太长,你怎么能跳过python中的循环迭代?...相关推荐

  1. python求三个整数最大值_python 练习题:定义一个getMax()函数,返回三个数(从键盘输入的整数)中的最大值。...

    此题比较简单,不做过多说明. 值得注意的是如何用一行代码让用户一次性输入为多个变量赋值 Python # 定义一个getMax()函数,返回三个数(从键盘输入的整数)中的最大值. def getMax ...

  2. HangFire循环作业中作业因执行时间太长未完成新作业开启导致重复数据的问题...

    背景 HangFire有个很奇怪的现象,就是即使你设置的循环作业是一天一次,但是每次作业执行很长时间,我们假设是1小时,那么差不多在开始执行之后的30分钟之后,如果还在执行job,系统就会自动帮你重新 ...

  3. python 一行太长_10条很棒的Python一行代码

    自从我用Python编写第一行代码以来,我就被它的简单性.出色的可读性和特别流行的一行代码所吸引.在下面,我想介绍并解释其中一些一行程序-可能有一些您还不知道,但对您的下一个Python项目很有用. ...

  4. java如何调用pyramid函数_讲解:ICM、Pyramid、JAVA,PYTHON、PYTHON ,C++SPSS| Statis

    讲解:ICM.Pyramid.JAVA,PYTHON.PYTHON ,C++SPSS| Statis2019 ICMProblem D: Time to leave the LouvreThe inc ...

  5. python发邮件图片太长显示不出来_Python电子邮件图像太长,无法显示,为什么Python在发送多图表电子邮件时只显示第一个图像?,python,发邮件,图片,不,出来,第一张...

    展开全部 #coding=utf-8 62616964757a686964616fe58685e5aeb931333337613862''' create this file Make it easi ...

  6. 【python 数据框apply】数据框多列计算调用apply函数

    自行创建文本文件score.txt,其中存储了如下所示若干学生的姓名.学号和3门考试课的成绩.编程将所有两门以上(含两门)课程不及格的学生信息输出到文件 fail.txt.其他学生信息输出到pass. ...

  7. python性能优化之函数执行时间分析_python性能优化之函数执行时间分析

    最近发现项目API请求比较慢,通过抓包发现主要是response时间太长,于是就开始进行优化工作.优化工作的关键一步是定位出问题的瓶颈,对于优化速度来说,从优化函数执行时间这个维度去切入是一个不错的选 ...

  8. 【theano-windows】学习笔记六——theano中的循环函数scan

    前言 Scan是Theano中最基础的循环函数, 官方教程主要是通过大量的例子来说明用法. 不过在学习的时候我比较习惯先看看用途, 然后是参数说明, 最后再是研究实例. 国际惯例, 参考网址 官网关于 ...

  9. java中for循环嵌套_Java中的for循环嵌套

    摘要 Java嵌套循环是指在一个循环语句的循环体中再定义一个循环语句的语法结构.whiledo.while.for循环语句都可以进行嵌套,并且它们之间也可以互相嵌套,如最常见的在for循环中嵌套for ...

最新文章

  1. 全球及中国汽车卡钳行业产销需求现状与投资策略分析报告2022年版
  2. 依赖注入_引用其他的bean
  3. TypeScript基础入门 - 接口 - 可索引的类型
  4. viito为什么不去新说唱_为什么问责制的说唱不好
  5. 自定义一个可复用的BaseAdapter
  6. JS操作iframe元素
  7. 理解JS散度(Jensen–Shannon divergence)
  8. 5输入的多数表决器(结构化建模)
  9. vscode代码格式化配置
  10. android清理存储空间不足,安卓手机内存空间不足该如何清理
  11. docker容器端口映射
  12. 花音机器人_氧叔在“难红难在哪儿”系列中分析曾黎时提到:
  13. PHP 垃圾回收机制
  14. phonopy制作shengBTE的FORCE_CONSTANTS_2ND
  15. JAVA医院预约挂号系统毕业设计 开题报告
  16. 忘记mysql的root密码啷个办
  17. Win10问题篇之——WIN2016和WIN10关闭同步主机服务,节省磁盘频繁读取,并关闭自动维护
  18. 以太网网卡历史-3com,intel及其它
  19. Echarts 表格通过ajax异步请求实现动态赋值(分析同比环比的实现)
  20. Java pcm文件与wav文件互转

热门文章

  1. c语言右上左下遍历数组,如何将一个数组的元素循环左移?
  2. oracle sql group_con,SQL:Group Functions,GROUP BY,HAVING
  3. ubuntu 更改语言桌面_让 Ubuntu 滚动更新
  4. 面向对象程序设计概述(金老师第一讲)
  5. 异构SOA系统架构之Asp.net实现(兼容dubbo)
  6. 拖拽上传及读取文件实现
  7. 「镁客·请讲」小i机器人朱频频:会话AI将成为主流人机交流方式,积累和深度学习是关键...
  8. 新浪微博API使用方法
  9. linux下虚拟光驱,求助:谁有Linux下的虚拟光驱软件?
  10. ali arthas 火焰图_阿里巴巴 Arthas 3.1.5版本支持火焰图,快速定位应用热点