2010-09-10 67 views
11

我正在使用多处理模块在我的程序中执行并行处理。当我测试它的时候,当我发现一个错误时,我经常想要尽早杀死这个程序,因为它需要一段时间才能完成。在我的Linux环境中,我从终端运行我的程序,并使用Ctrl + C来终止它。使用多进程,这会导致所有的进程被终止,但我从来没有得到bash提示符,并且不得不关闭终端并打开一个新的(并导航回我的工作目录),这非常烦人。有什么办法可以解决这个问题吗?使用多处理惩罚程序

+0

您能否提供一个您想要实现的样例? – hyperboreean 2010-09-10 17:09:20

+0

看到这个线程:http://stackoverflow.com/questions/1408356/keyboard-interrupts-with-pythons-multiprocessing-pool – wchung 2011-10-21 20:43:16

回答

21

按CTRL-Z暂停Python进程,然后做kill %1将其杀死。您也可以按Ctrl- \(反斜杠),但这可能会导致进程离开核心文件。

+2

+1:有时多线程/多进程的程序,你必须杀死-9%1'那坏男孩。 – jathanism 2010-09-10 17:20:02

2

但是,等待......没有办法处理KeyboardException事件来终止池中的进程吗?

我想:

except KeyboardInterrupt as e: # Ctrl-C 
    print("Killing all the children in the pool.") 
    pool.close() 
    pool.terminate() 
    return 1 
    # raise e 

但它似乎并没有工作。

+3

我很想知道如何使这项工作。 – 2013-05-23 15:15:41