我有下面的脚本,它主要工作Link to PasteBin该脚本的工作是启动多个线程,这些线程依次用Popen启动一个子进程。每个子流程的输出如下:1

2

3

.

.

.

n

Done

基本上,由于模式的不同,子进程将10M条记录从一个数据库中的表传输到另一个数据库中的不同表中,其间需要进行大量的数据处理/操作。如果子进程在其执行过程中的任何时候失败(记录错误、主键重复等),或者它成功完成,它将输出“Done\n”。如果没有更多的记录可供选择以进行传输,则它将输出“no DATA\n”

我的目的是创作我的剧本”表格传输.py“这将产生许多这样的进程,读取它们的输出,进而输出诸如已完成的更新数、剩余时间、已用时间和每秒传输数等信息。在

我昨晚开始运行这个进程,今天早上检查发现它死机了。没有运行子进程,仍有要更新的记录,并且脚本尚未退出。它只是坐在那里,不再输出当前的信息,因为没有子进程在运行以更新完成的总数,这是控制对输出的更新。这是在OSX上运行的

我要找三样东西:我想摆脱这种僵局发生的可能性,所以我不需要经常检查它。锁定有什么问题吗?在

我这样做的方式不好吗(gThreading变量来控制生成额外线程的循环。。。等等)我希望能给我一些改进我整体方法的建议。在

我应该如何处理ctrl-c退出?现在我需要终止进程,但是假设我应该能够使用信号模块或其他模块来捕获信号并杀死线程,对吗?在

我不确定是否应该在这里粘贴我的整个脚本,因为我通常只是粘贴片段。让我知道我是否应该粘贴在这里。在