【问题标题】:Python timeout a function [duplicate]Python超时函数[重复]
【发布时间】:2013-07-04 09:33:10
【问题描述】:

我尝试使用超时装饰器(使用信号)来使函数超时,但它导致主线程错误

在几秒钟后使函数超时的任何其他解决方案

谢谢

【问题讨论】:

  • 你的意思是在一段时间后中断函数执行?还要粘贴一些示例代码吗?
  • 是中断函数。
  • 也许显示你的代码?

标签: python django apache


【解决方案1】:

对我来说,这样的问题可以使用多线程方法来解决,因为执行您的方法的线程不可能抢占正在运行的任务或使用操作系统功能来抢占正在运行的函数并执行一些代码。

  1. 您可以生成一个线程来执行您的方法代码,并让主线程倒计时,直到指定的时间过去。

  2. 另一种方法是使用信号 python 框架,该框架能够发送映射到系统进程信号的信号(不能映射所有信号,因为并非所有操作系统都支持它们)。当这样的信号被发送时(signal.alarm(3) 在 3 秒后发送),python 进程完成当前解释器指令的执行并执行你定义的处理程序。

顺便说一句,我刚刚注意到您的问题与 one 重复,您可以在其中找到第二个解决方案的 sn-p。

【讨论】:

  • 我也试过了,但结果是错误'信号只在主线程中有效'
猜你喜欢
  • 2015-12-28
  • 2015-11-30
  • 1970-01-01
  • 2016-07-14
  • 1970-01-01
  • 1970-01-01
  • 2014-08-20
  • 2018-10-06
  • 1970-01-01
相关资源
最近更新 更多