我有以下脚本,它大部分都在工作Link to PasteBin脚本的工作是启动一些线程,然后每个线程都用Popen启动一个子进程。每个子流程的输出如下:
1
2
3
.
.
.
n
Done
基本上,子进程将10M记录从一个数据库中的表传输到另一个数据库中的不同表,由于存在不同的模式,其间存在大量数据按摩/操作。如果子进程在执行过程中的任何时候失败(错误记录,重复主键等),或者它成功完成,它将输出“Done \ n”。如果没有更多的记录可供选择进行转移,那么它将输出“NO DATA \ n”
我的目的是创建我的脚本“tableTransfer.py”,它会产生许多这些进程,读取它们的输出,然后输出信息,例如已完成的更新次数,剩余时间,已用时间和传输次数每秒。
我昨晚开始运行这个过程,并在今天早上检查,发现它已陷入僵局。没有子程序在运行,仍有记录需要更新,脚本没有退出。它只是坐在那里,不再输出当前信息,因为没有子程序正在运行以更新完成的总数,这是控制输出更新的内容。这是在OS X上运行的。
我正在寻找三件事:
我不确定是否应该粘贴我的整个脚本,因为我通常只是粘贴代码段。如果我也应该将它粘贴在这里,请告诉我。
答案 0 :(得分:0)
您的脚本中有一些地方可以在不释放锁的情况下返回。这可能会导致问题 - 行:97和99 - 这就是try:finally:blocks可以帮助你很多,因为你可以确保正确调用版本。