我想循环一组文件,并对每个文件执行"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. 学习别跟我谈兴趣 No.88
  2. nslookup域名解析
  3. 动态绑定与继承:不得不去想细节
  4. Java【全排列 算法 模板】
  5. nexus 6p Android SDK,Flutter没有检测到Android SDK
  6. Asp.net 2.0 动态加载其他子目录用户控件问题
  7. 微信小程序会改变大世界吗?
  8. 百度人脸识别技术应用001---百度人脸识别应用业务介绍
  9. java lang保_java中lang包下的类都涉及哪几方面的
  10. 计算机电子表格的相关试题,(统考计算机模拟练习试题及答案电子表格.doc
  11. 计算机信息数据集通信的概念,南京信息工程大学数据通信与计算机网络复习题库.doc...
  12. Python 命令行之旅:深入 argparse(二)
  13. win7上python2.7连接mysql数据库
  14. 怎样以最快的速度导入mysql
  15. 解决方案:Coin3D安装编译以及配合VS2019、QT的使用
  16. 6U-VPX 高速固态存储板卡—— 外挂2片DDR3,8GB/s带宽,存储容量16TB (KU085)
  17. 嵌入式系统中的FLASH
  18. 语音信号处理(二):矩形窗和汉明窗时域波形和频域波形
  19. 表单 HTML 模拟登陆界面
  20. (XWZ)的python学习笔记Ⅰ

热门文章

  1. 结束下面sql块_oracle: PL/SQL基本结构,语法,变量
  2. oracle统计每天数据增量,每天的业务数据增量导入oracle库方法讨论
  3. QString转HTuple
  4. 机器视觉系统中相机的分辨率怎么选择?
  5. java实验的总结_Java实验总结——初学(上)
  6. 16、Flutter Widget - PageView;
  7. 一个进程(Process)最多可以生成多少个线程(Thread)
  8. 桌面重置,所有的东西都消失了怎么办?
  9. PaddlePaddle飞桨OCR文本检测——更改模型保存间隔(六)
  10. Github-推送代码报错“error:RPC failed;curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL,errno 10054”解决方案