在python中,一个玩具示例:
for x in range(0, 3):
# call function A(x)
如果函数A通过跳过它花费了5秒以上的时间,我想继续for循环,这样我就不会卡住或浪费时间。
通过进行一些搜索,我意识到子进程或线程可能会有所帮助,但是我不知道如何在此处实现。任何帮助都会很棒。谢谢
我认为创建一个新的流程可能是过大的。如果您使用的是Mac或基于Unix的系统,则应该能够使用signal.SIGALRM来强制使时间过长的功能超时。这将适用于闲置的网络功能或修改功能绝对无法解决的其他问题。
在这里编辑我的答案,尽管我不确定是否应该这样做:
import signal
class TimeoutException(Exception): # Custom exception class
pass
def timeout_handler(signum, frame): # Custom signal handler
raise TimeoutException
# Change the behavior of SIGALRM
signal.signal(signal.SIGALRM, timeout_handler)
for i in range(3):
# Start the timer. Once 5 seconds are over, a SIGALRM signal is sent.
signal.alarm(5)
# This try/except loop ensures that
# you'll catch TimeoutException when it's sent.
try:
A(i) # Whatever your function that might hang
except TimeoutException:
continue # continue the for loop if function A takes more than 5 second
else:
# Reset the alarm
signal.alarm(0)
这基本上将计时器设置为5秒钟,然后尝试执行您的代码。如果在时间用完之前未能完成,则会发送SIGALRM,我们将其捕获并变成TimeoutException。这将迫使您进入except块,您的程序可以继续执行。
编辑:哎呀,TimeoutException
是一个类,而不是一个函数。谢谢,阿巴纳特!
null 我的数据库服务器在x86_64-unknown-linux-gnu上运行
问题内容: 要在网站上显示某个功能,该功能会在3秒左右的时间内将您重定向到该网站,我该怎么办? 问题答案:
问题内容: 在一段时间后,有一些用于重定向的PHP函数。我在某处看到它,但记不起来了。就像登录后的gmail重定向一样。请有人提醒我吗? 问题答案: header( “refresh:5;url=wherever.php” ); 这是php的设置方式,它将在 5秒内* 将您重定向到 * 请记住,必须先通过常规HTML标记,文件中的空白行或从PHP发送任何实际输出,然后调用header()。读取包含
问题内容: 匹配条件后,如何在一段时间后更新表? 我需要在满足某些条件后进行更新,并在2天后根据收到的最新答案(即e)进行更新,因此应在上进行更新。 问题答案: 试试这个 如此看来,这两个表是由相连的,并且具有的最新回答日期。通过使用我们可以知道今天的日期和比赛的答案之间的差异。
我想在一定的时间间隔后,在主要活动上添加一个间隙广告。我搜索,似乎没有参考代码这样做。感谢你的帮助我该怎么做?任何示例代码都将是有用的。多谢了。
我编写了一个函数,用于在给定范围之前或之后截断数据。我传入一个日期元组,位置1是开始日期,位置2是结束日期。 我如何也可以选择指定截断b4和b4之后的时间和日期-我将如何使用我的代码来做到这一点?*) 此外-我一直在我的数据上得到一个错误,说: 我使用: 我的日期元组: 这是数据集的my df.head(): 我已经运行了下面的程序来检查索引中的dupilcates,它返回NAT,所以我不确定为什