多处理冻结计算机

2024-07-01

我通过使用多处理提高了执行时间,但我不确定 PC 的行为是否正确,它会冻结系统,直到所有进程完成。 我使用的是 Windows 7 和 Python 2.7。

也许我做错了,这就是我所做的:

def do_big_calculation(sub_list, b, c):
    # do some calculations here with the sub_list

if __name__ == '__main__':
    list = [[1,2,3,4], [5,6,7,8], [9,10,11,12]]
    jobs = []
    for sub_l in list :
        j = multiprocessing.Process(target=do_big_calculation, args=(sub_l, b, c))
        jobs.append(j)
    for j in jobs:
        j.start()

在这里,您正在创建 1Process每个任务。这将并行运行您的所有任务,但它会给您的计算机带来沉重的开销,因为您的调度程序需要管理许多进程。这可能会导致系统冻结,因为您的程序使用了太多资源。

这里的一个解决方案可能是使用multiprocessing.Pool运行给定数量的进程同时执行某些任务:

import multiprocessing as mp

def do_big_calculation(args):
    sub_list, b, c = args
    return 1

if __name__ == '__main__':
    b, c = 1, 1
    ll = [([1, 2, 3, 4], b, c),
          ([5, 6, 7, 8], b, c),
          ([9, 10, 11, 12], b, c)]
    pool = mp.Pool(4)
    result = pool.map(do_big_calculation, ll)
    pool.terminate()
    print(result)

如果您准备使用第三方库,您还可以看看concurrent.futures https://github.com/agronholm/pythonfutures(你需要在python2.7中安装它,但它存在于python3.4+)或joblib http://pythonhosted.org/joblib/(可通过 pip 获得):

from joblib import Parallel, delayed

def do_big_calculation(sub_list, b, c):
    return 1

if __name__ == '__main__':
    b, c = 1, 1
    ll = [([1, 2, 3, 4], b, c),
          ([5, 6, 7, 8], b, c),
          ([9, 10, 11, 12], b, c)]
    result = Parallel(n_jobs=-1)(
        delayed(do_big_calculation)(l, b, c) for l in ll)
    print(result)

这种库的主要优点是它正在开发中,而multiprocessing在python2.7中被冻结。因此,错误修复和改进相对频繁。
它还实现了一些巧妙的工具来减少计算开销。例如,它使用大 numpy 数组的内存映射(减少启动所有作业的内存占用)。

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

多处理冻结计算机 的相关文章

随机推荐

  • 同一项目的不同文件夹中的相同包名称

    我正在开发一个大项目 最终可能会包含数万行代码 对于当前的结构我喜欢这样 main go controllers NAME go models NAME go 问题是控制器和模型目录包含很多文件 全部使用package controller
  • 如何在javascript中获取表中复选框的值

    我需要获取表行中提供跨度的复选框的值 下面的代码是我的项目的一部分 HTML 代码用于动态我的表格 而 javascript 代码用于获取不适用于复选框的元素的值 它适用于其他输入元素 我的桌子 var html tr class rows
  • 在 Azure AD B2C 中,首次从社交登录登录时,如何将用户的社交帐户与现有本地帐户关联?

    据我从文档中了解到 Azure AD B2C 会在第一次登录时为来自 GMail Facebook 等社交登录的每个用户创建一个新的本地帐户 如果我错了 请纠正我 但是 我想拦截此行为并将用户链接到已经存在的 用户自己的 本地帐户 而不通过
  • ++ 已弃用,它将在 swift 3 中删除[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 将在 swift 3 中被弃用 变量 现在可以写成 variable 1 我怎样才能重写 variable 请回忆一下之间的区别 varia
  • PHP Serialize() ― 规范 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在寻找有关 PHP serial
  • 使用 terraform 初始化 terraform 后端

    我刚刚开始使用 terraform 我希望能够使用 AWS S3 作为后端来存储项目的状态 terraform backend s3 bucket tfstate key app state region us east 1 我觉得使用 t
  • 如何使用判别函数绘制 3 个类别之间的决策边界

    我有 3 个判别函数 将 2D 空间划分为 3 个区域 我想绘制这些区域之间的决策边界 我不知道如何在 python 中使用 matplotlib meshgrid 来做到这一点 对于2个判别函数 过程很简单 我计算值为 0 的函数和等高线
  • 从 canActivate 方法返回 Observable 并在 false 时重定向

    我一直在寻找解决方案但没有运气 如果用户获得授权 我需要调用服务器 并且我需要 canActivate 方法来等待该调用的结果 但我似乎无法将各个部分拼凑在一起 下面是我的代码 我的问题在代码的注释中 canActivate route A
  • 从 Outlook 中提取电子邮件地址

    我正在尝试提取 Outlook 收件箱中所有电子邮件的电子邮件地址 我在互联网上找到了这段代码 Sub GetALLEmailAddresses Dim objFolder As MAPIFolder Dim strEmail As Str
  • NSCollectionView 自定义布局启用滚动

    我无法垂直和水平滚动来使用自定义布局NSCollectionView 根据文档 在我的子类中我返回collectionViewContentSize如果太大 则会在集合视图的封闭滚动视图中自动启用滚动 但是 即使我将所有元素排列在水平行中
  • Select2 的行为与未为 Select2 定义的 Uncaught 查询函数非常不同

    我按以下方式加载 select2 的值 声明类型 var AdjustmentType Backbone Model extend url Hexgen getContextPath referencedata adjustmenttype
  • ListView 内的 TextBox 绑定到对象,双向绑定不起作用

    Edit 好吧 在尝试了无数次但没有成功之后 我创建了一个非常小的 Wpf 应用程序 您可以直接复制此代码 请注意 当您更改文本框中的值并按 测试 按钮时 这些值永远不会更新 我不明白为什么双向绑定不起作用 请帮忙 这是 xaml
  • 使用 Symfony2 对实体进行级联验证

    我想知道如何使用验证器服务对实体执行级联验证 Using validator this gt get validator errorList validator gt validate entity 不执行 实体 子实体的验证 我很确定它可
  • 在 Scala 宏中对来自 ValDef 的 TypeTree 值进行模式匹配的正确方法?

    我需要读取案例类的字段并根据字段的类型执行不同的操作 我想我会尝试使用宏 读取每个 TypeTree 上的 ValDef 和模式匹配 但这并没有揭示每个 TypeTree 代表什么 例如 整数和字符串都显示为 TypeTree 除了打电话还
  • Python pandas - 根据集体 NaN 计数删除组

    我有一个基于不同气象站的多个变量 温度 压力等 的数据集 stationID Time Temperature Pressure 123 1 30 1010 5 123 2 31 1009 0 202 1 24 NaN 202 2 24 3
  • 画笔和钢笔使用指南

    制作 GDI 画笔和钢笔有多贵 我应该在添加所需的基础上创建它们并将它们包装在 using 中以便快速处理它们 还是应该创建一个类似于 System Drawing Brushes 类的静态类 IMO 它们足够高效 您通常不应该创建在多个方
  • 使用按键选择 PrimeNG 表上的行

    我正在使用 PrimeNG 表 并尝试选择pSelectableRow通过按键 我有一个全局搜索输入 它将过滤表的所有结果 当用户完成搜索时 我希望他们能够单击键盘上的按钮并从过滤的选项中选择行 目前 如果用户正在搜索并且输入框获得焦点 则
  • Mac 上缺少 spring-boot-starter-web hibernate-validator 依赖项

    我在STS Spring工具套件 上创建了Spring Boot项目 Spring Starter Project Window和Mac都有 这是我的pom xml
  • 尝试创建测试时注入自动装配依赖项失败

    我正在尝试创建一个junit测试存储库 我得到了这个很好的异常 完全例外 org springframework beans factory BeanCreationException Error creating bean with na
  • 多处理冻结计算机

    我通过使用多处理提高了执行时间 但我不确定 PC 的行为是否正确 它会冻结系统 直到所有进程完成 我使用的是 Windows 7 和 Python 2 7 也许我做错了 这就是我所做的 def do big calculation sub