线程python应用程序没有干净地关闭

时间:2013-02-09 03:39:49

标签: python multithreading python-2.7

我有一个用Python 2.7编写的small crawling application,它使用线程来获取大量的URL。但是它并没有干净地关闭或者对KeyboardInterrupt做出正确的反应,尽管我试图通过我在这里找到的一些建议解决后一个问题。

def main():
    ...
    for i in range(NUMTHREADS):
        worker = Thread(target=get_malware, args=(malq,dumpdir,))
        worker.setDaemon(True)
        worker.start()

    ...

    malq.join()


if __name__ == "__main__":
    try:
        main()
    except KeyboardInterrupt:
        sys.exit()

我需要确保当我按下Ctrl-C或完成其运行时它将正常退出,而不是必须按Ctrl-Z并终止该作业。

谢谢!

1 个答案:

答案 0 :(得分:0)

讨论GIL如何影响具有多个IO绑定线程的Python应用程序的信号处理。显然IO绑定线程导致主线程处理时间过长并且无法按预期处理信号。我建议查看备用parallel processing options(如subprocess模块或multiprocessing)或异步框架(如asyncoro