多处理池停止启动进程

时间:2015-03-23 09:31:05

标签: python multiprocessing

我遇到了多处理问题.Pool。看起来似乎是一个未知的原因multiprocessing.Pool没有启动进程。我执行apply_async但它从不启动进程。

我有一个调度程序,它从数据库(PostgreSQL)队列中获取工作并使用apply_async启动进程。

这是一个后端系统,它启动了大量的流程,每天大约30k。它通常可以工作,但有时一段时间后(一天,一周,两周等等),池停止调用launchProcessWork。

这里简化了代码:

def launchProcessWork(id_work):
    work = SchedulerWorker(id_work)
    return (id_work,work.run())

def poolcallback(r):
    id_work = r[1]
    result = r[2]

    finishwork(id_work,result)        

pool = Pool(processes=self.__nparallel,initializer=proc_initializer,initargs=(format,))

while True:

    # get next works from database (Postgresql)
    works = model.getWorks()
    for w in works:
        # Check if the process is already in the poll
        if not isworkatpoll(w):
            pool.apply_async(func=launchProcessWork, args=(w["id"],),callback=poolcallback)

我知道这真的很奇怪(可能是我系统的并发问题),但我想知道是否有人尝试过类似的问题。

我正在使用Docker运行它,如果它有帮助......

0 个答案:

没有答案