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

2023-11-24

我一直在使用一组工作人员来实现 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 上读到了很多类似的问题,比如如何杀死多处理模块创建的僵尸进程?这需要使用我已经实现的 .join() ,并且我学会了如何从这里终止所有这些进程Python 多处理杀死进程。但我想知道我的代码可能会出现什么问题。 我无法共享 main1 函数中的所有代码,但我已将整个代码块放入 try catch 块中,以避免主代码中的错误可能导致僵尸进程。

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它封装了多重处理,让我的生活(也可能是你的)更轻松。

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)
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 多处理导致许多僵尸进程 的相关文章

随机推荐

  • 如何在 yml 中获取我的配置值 - 使用 dropwizard (微服务) Jersey D.I @Injection?

    这是我的代码片段 这是我的 yml 文件 productionServer host production server amazonaws com publicIp xx xx xx xx privateIp xx xx xx xx us
  • 如何通过C#配置Outlook帐户?

    需要通过c 配置email 姓名 邮件服务器等 在不使用 Outlook Redemption 的情况下如何执行此操作 First 创建一个 PRF 文件 通过 NET 应用程序手动或动态 然后 要导入帐户 请使用命令行选项启动 Outlo
  • 为什么我们不将 .class 扩展名与“java”命令一起使用?

    为什么我们不给filename class之后归档java命令 而不是仅filename 假设我们要编译test java程序 然后我们运行javac test java 没关系 之后它会产生test class文件但运行我们运行的程序ja
  • 与 suPHP 一起实现登录

    如何设计类似登录的功能来使用 suPHP 的文件权限 例如 如果我有一个网站www example com以下两个用户有自己的主目录 每个用户都有一个 php 脚本test php and a validateUser php属于另一个用户
  • 在 MediaProjection 中完全隐藏安全视图 - android

    我正在使用 MediaProjection API 创建屏幕录像机应用程序 在我的应用程序中 我将停止按钮显示为一个小的覆盖窗口 我已将此视图保持安全 以便它不会出现在最终录制的视频中 此视图不会出现在最终视频中 但最终输出本身是一个黑色区
  • 使用服务主体访问 Azure Blob 存储

    我想通过使用活动目录服务主体的凭据从 python 访问私有 blob 存储 我知道这个相关问题如何在 python 中针对 Azure 存储 blob 对用户进行身份验证 这帮助我走到了这一步 但现在我陷入了困境 我可以进行身份 验证并获
  • 将结构传递给函数

    我是一名新 C 程序员 我想知道如何通过struct到一个函数 我收到错误并且无法找出正确的语法来执行此操作 这是它的代码 Struct struct student char firstname 30 char surname 30 st
  • Docker 撰写可执行文件在 $PATH 中找不到”:未知

    但我有问题 Dockerfile FROM python 3 ENV PYTHONUNBUFFERED 0 RUN mkdir code WORKDIR code COPY requirements txt code RUN pip ins
  • 使用 powershell 从 Outlook 获取今天的约会:不需要的结果

    我使用以下代码提取今天的约会 olFolderCalendar 9 ol New Object ComObject Outlook Application ns ol GetNamespace MAPI Start Get Date Add
  • switch 语句 - 字符串与 int

    我在事件处理程序中有这行 javascript var value event currentTarget value example 9 然后我在 switch 语句中使用它 switch value case 9 return 12 c
  • 计算设置的位数

    我想计算设置的二进制数中的位数 例如 用户输入数字 97 二进制表示为 01100001 该程序应该告诉我 3 位是使用 MIPS ISA 设置的 我能够用 C 实现这一点 但我不知道如何使用汇编代码实现它 您要查找的内容通常称为人口计数
  • WPF图像控件源码

    我试图在 WPF 中重新创建一个非常简单的 C 项目示例 它是一个简单的图像查看器 来自 sam 的自学 C 我设法打开了打开文件对话框 但是我如何将图像路径设置为WPF 中的 image source 控件 private void Se
  • 异步任务与异步无效

    这可能是一个非常愚蠢的问题 但我有以下几行代码将 RAW 图像转换为 BitmapImages public async void CreateImageThumbnails string imagePath int imgId await
  • 如何在 Windows 上使用另一个用户帐户创建新进程?

    是否可以使用不同的用户帐户在 Windows 上创建新进程 我知道有一个上下文菜单 运行方式 但我想从 Java 执行此操作 我有用户名和密码 您需要使用以下方法编写 DLLJava 本机接口 JNI 因为你无法使用纯 Java 代码来做到
  • 将 Nokogiri 文档转换为 Ruby Hash

    有没有一种简单的方法可以将 Nokogiri XML 文档转换为哈希值 类似于 Rails 的东西Hash from xml 如果要将 Nokogiri XML 文档转换为哈希 只需执行以下操作 require active support
  • 如何在jquery中启用和禁用文本框[重复]

    这个问题在这里已经有答案了 我写了一个html和脚本的示例代码如下 当我首先执行此代码时 我会收到警报 hello 但当我通过按选项卡按钮在 cca 进行更改时 会收到其他警报 然后它不会显示警报 如何使用该文本框并启用和禁用它的其他文本字
  • 如何将 DataTable 序列化为 json 或 xml

    我正在尝试将 DataTable 序列化为 Json 或 XML 可能吗 如何 任何教程和想法 请 例如有一个sql表 CREATE TABLE dbo dictTable keyValue int IDENTITY 1 1 NOT NUL
  • 如何在 Swift 中比较两个字典?

    有没有一种简单的方法可以比较两个 String AnyObject Swift 中的字典 因为它不接受 操作员 通过比较两个字典 我的意思是检查它们是否具有相同的精确键 并且对于每个键 它们是否具有相同的值 正如 Hot Licks 已经提
  • 计算垂直于 3D 中第三个向量的两个向量

    是什么最好 最快 如何计算垂直于第三个向量 X 并且彼此垂直的两个向量 这就是我现在计算这个向量的方式 HELPER unit vector that is NOT parallel to X x axis normalize X y ax
  • Python 多处理导致许多僵尸进程

    我一直在使用一组工作人员来实现 python 的多处理库 我实现了以下代码 import main1 t1 time time p Pool cores result p map main1 client list client if re