目前我遇到了这个麻烦: 之前我使用过单个线程脚本,用于逐个执行SQL,每个SQL都有一个时间限制 - 5400s。因此,如果其中一个SQL运行时间超过5400秒,则此SQL将被停止并签名为超时'。计时器代码可以显示为:
def alarmrun(cmd_command):
try:
signal.signal(signal.SIGALRM, handler)
signal.alarm(5400)
utils.system_output(cmd_command, retain_output=True)
signal.alarm(0)
except AssertionError:
print "=======" + exec_nu + "alarm execute error======="
但是,我需要将SQL执行为多线程,这意味着大约有5个SQL同时运行。据我所知,信号方法不支持在子线程中使用。
我在父线程中启动我的线程:
for i in range(len(threads)):
threads[i].start()
我在哪里可以使用信号来计算传递的时间,或者我可以尝试在多线程版本中尝试达到相同效果的其他方法?
谢谢!