gpt4 book ai didi

Python多处理导致许多僵尸进程

转载 作者:太空狗 更新时间:2023-10-29 20:43:37 24 4
gpt4 key购买 nike

我一直在使用工作池实现 python 的多处理库。我实现了以下代码

import main1
t1 = time.time()
p = Pool(cores)
result = p.map(main1, client_list[client])
if result == []:
return []
p.close()
p.join()
print "Time taken in performing request:: ", time.time()-t1
return shorted(result)

但是,在运行该进程一段时间后,我的应用程序有很多正在运行的后台进程。这是为我的应用程序执行 ps aux 后的快照

Snapshot showing all the zombie processes

现在,我已经在 stackoverflow 上阅读了很多类似的问题,例如 how to kill zombie processes created by multiprocessing module?这需要使用我已经实现的 .join() 并且我从这里学会了如何终止所有这些进程 Python Multiprocessing Kill Processes .但我想知道我的代码可能出了什么问题。我无法在 main1 函数中共享我的所有代码,但我已将整个代码块放在 try catch block 中,以避免主代码中的错误可能导致僵尸进程的情况。

def main1((param1, param2, param3)):
try:
resout.append(some_data) //resout in case of no error
except:
print traceback.format_exc()
resout = [] //sending empty resout in case of error
return resout

我对并行编程的概念还是很陌生,调试问题也很棘手。非常感谢任何帮助。

最佳答案

通常最常见的问题是创建了池但没有关闭。

我知道保证池关闭的最好方法是使用 try/finally 子句:

try:
pool = Pool(ncores)
pool.map(yourfunction, arguments)
finally:
pool.close()
pool.join()

如果您不想在 multiprocessing 上挣扎,我写了一个名为 parmap 的简单包,它包装了 multiprocessing 让我(也可能是你)的生活更轻松。

pip install parmap

import parmap
parmap.map(yourfunction, arguments)

来自 parmap 用法部分:

  • 简单的并列例子:

    import parmap
    y1 = [myfunction(x, argument1, argument2) for x in mylist]
    y2 = parmap.map(myfunction, mylist, argument1, argument2)
    y1 == y2
  • 遍历元组列表:

    # You want to do:
    z = [myfunction(x, y, argument1, argument2) for (x,y) in mylist]
    z = parmap.starmap(myfunction, mylist, argument1, argument2)


    # You want to do:
    listx = [1, 2, 3, 4, 5, 6]
    listy = [2, 3, 4, 5, 6, 7]
    param = 3.14
    param2 = 42
    listz = []
    for (x, y) in zip(listx, listy):
    listz.append(myfunction(x, y, param1, param2))
    # In parallel:
    listz = parmap.starmap(myfunction, zip(listx, listy), param1, param2)

关于Python多处理导致许多僵尸进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30506489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com