我有一个用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并终止该作业。
谢谢!
答案 0 :(得分:0)
讨论GIL如何影响具有多个IO绑定线程的Python应用程序的信号处理。显然IO绑定线程导致主线程处理时间过长并且无法按预期处理信号。我建议查看备用parallel processing options(如subprocess模块或multiprocessing)或异步框架(如asyncoro)