如何识别和报告Python多处理器问题

如何识别和报告Python多处理器问题,python,queue,multiprocessing,Python,Queue,Multiprocessing,我正在运行一个Python 2.7脚本,它处理数千个文件和文档,使用16个处理器处理JoinableQueue中排队的作业。我们遇到了一个问题,其中一些正在处理的文件/文件夹数据已损坏。所有作业似乎最终都会完成,但数据损坏的作业需要很长时间。长时间运行的处理实际上发生在外部库中,因此一旦启动,该过程需要等待库方法完成 我不想终止长时间运行的进程,但当一个作业花费的时间超过30秒或一分钟时,我想记录一条消息,说明哪个作业的工作时间比预期的长 主代码被queue.join()阻止。如何监视处理的状态

我正在运行一个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
相关的