如何识别和报告Python多处理器问题
我正在运行一个Python 2.7脚本,它处理数千个文件和文档,使用16个处理器处理JoinableQueue中排队的作业。我们遇到了一个问题,其中一些正在处理的文件/文件夹数据已损坏。所有作业似乎最终都会完成,但数据损坏的作业需要很长时间。长时间运行的处理实际上发生在外部库中,因此一旦启动,该过程需要等待库方法完成 我不想终止长时间运行的进程,但当一个作业花费的时间超过30秒或一分钟时,我想记录一条消息,说明哪个作业的工作时间比预期的长 主代码被queue.join()阻止。如何监视处理的状态?每次处理文档作业时启动异步后台计时器进程的最佳方法是,还是有更好的方法 我已经删除了大部分代码,但我们正在做的工作的框架如下:如何识别和报告Python多处理器问题,python,queue,multiprocessing,Python,Queue,Multiprocessing,我正在运行一个Python 2.7脚本,它处理数千个文件和文档,使用16个处理器处理JoinableQueue中排队的作业。我们遇到了一个问题,其中一些正在处理的文件/文件夹数据已损坏。所有作业似乎最终都会完成,但数据损坏的作业需要很长时间。长时间运行的处理实际上发生在外部库中,因此一旦启动,该过程需要等待库方法完成 我不想终止长时间运行的进程,但当一个作业花费的时间超过30秒或一分钟时,我想记录一条消息,说明哪个作业的工作时间比预期的长 主代码被queue.join()阻止。如何监视处理的状态
queue = mp.JoinableQueue()
for doc in doclist:
queue.put(doc)
processes = [mp.Process(target=doprocessing, args=[queue]) for i in range(nb_workers)]
for p in processes:
p.start()
queue.join()
for p in processes:
p.terminate()
def doprocessing(queue):
while True:
item = queue.get()
try:
processDoc(item["id"])
except:
pass
queue.task_done()
def processDoc(id):
# Do processing
pass
相关的