用于多线程的python计时器

时间:2018-01-17 03:40:13

标签: python multithreading timer signals

目前我遇到了这个麻烦: 之前我使用过单个线程脚本,用于逐个执行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()

我在哪里可以使用信号来计算传递的时间,或者我可以尝试在多线程版本中尝试达到相同效果的其他方法?

谢谢!

0 个答案:

没有答案