0

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

几秒钟后使功能超时的任何其他解决方案

谢谢

4

1 回答 1

0

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

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

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

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

于 2013-07-04T10:07:54.103 回答