我可以在 Pool.imap 调用的函数中使用多处理队列吗?

2023-11-30

我正在使用 python 2.7,并尝试在自己的进程中运行一些 CPU 繁重的任务。我希望能够将消息发送回父进程,以使其了解进程的当前状态。多处理队列似乎对此很完美,但我不知道如何让它工作。

所以,这是我的基本工作示例,不使用队列。

import multiprocessing as mp
import time

def f(x):
    return x*x

def main():
    pool = mp.Pool()
    results = pool.imap_unordered(f, range(1, 6))
    time.sleep(1)

    print str(results.next())

    pool.close()
    pool.join()

if __name__ == '__main__':
    main()

我尝试以多种方式传递队列,但他们收到错误消息“RuntimeError:队列对象只能通过继承在进程之间共享”。这是我根据我发现的早期答案尝试的方法之一。 (我尝试使用 Pool.map_async 和 Pool.imap 时遇到同样的问题)

import multiprocessing as mp
import time

def f(args):
    x = args[0]
    q = args[1]
    q.put(str(x))
    time.sleep(0.1)
    return x*x

def main():
    q = mp.Queue()
    pool = mp.Pool()
    results = pool.imap_unordered(f, ([i, q] for i in range(1, 6)))

    print str(q.get())

    pool.close()
    pool.join()

if __name__ == '__main__':
    main()

最后,0适应度方法(使其成为全局的)不会生成任何消息,它只是锁定。

import multiprocessing as mp
import time

q = mp.Queue()

def f(x):
    q.put(str(x))
    return x*x

def main():
    pool = mp.Pool()
    results = pool.imap_unordered(f, range(1, 6))
    time.sleep(1)

    print q.get()

    pool.close()
    pool.join()

if __name__ == '__main__':
    main()

我知道它可能会直接与 multiprocessing.Process 一起使用,并且还有其他库可以完成此操作,但我讨厌放弃非常适合的标准库函数,直到我确定这不仅仅是我的缺乏知识使我无法利用它们。

Thanks.


技巧是将队列作为参数传递给初始化器。似乎适用于所有池调度方法。

import multiprocessing as mp

def f(x):
    f.q.put('Doing: ' + str(x))
    return x*x

def f_init(q):
    f.q = q

def main():
    jobs = range(1,6)

    q = mp.Queue()
    p = mp.Pool(None, f_init, [q])
    results = p.imap(f, jobs)
    p.close()

    for i in range(len(jobs)):
        print q.get()
        print results.next()

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

我可以在 Pool.imap 调用的函数中使用多处理队列吗? 的相关文章

  • Lighttpd 和 cgi python

    我正在尝试通过 lighttpd 执行一些 python 脚本 但是当我尝试运行它时 我只得到一个要求我下载的空白文件 lighttpd conf server modules mod access mod alias mod access
  • 是否有解决方法可以通过 CoinGecko API 安全检查?

    我在工作中运行我的代码 一切都很顺利 但在不同的网络 家庭 WiFi 上 我不断收到403访问时出错CoinGecko V3 API https www coingecko com api documentations v3 可以观察到 在
  • 为什么从 Pandas 1.0 中删除了日期时间?

    我在 pandas 中处理大量数据分析并每天使用 pandas datetime 最近我收到警告 FutureWarning pandas datetime 类已弃用 并将在未来版本中从 pandas 中删除 改为从 datetime 模块
  • 使用特定的类/函数预加载 Jupyter Notebook

    我想预加载一个笔记本 其中包含我在另一个文件中定义的特定类 函数 更具体地说 我想用 python 来做到这一点 比如加载一个配置文件 包含所有相关的类 函数 目前 我正在使用 python 生成笔记本并在服务器上自动启动它们 因为不同的
  • 安装了 32 位的 Python,显示为 64 位

    我需要运行 32 位版本的 Python 我认为这就是我在我的机器上运行的 因为这是我下载的安装程序 当我重新运行安装程序时 它会将当前安装的 Python 版本称为 Python 3 5 32 位 然而当我跑步时platform arch
  • 用枢轴点拟合曲线 Python

    我有下面的图 我想用 2 条线来拟合它 使用 python 我设法适应上半部分 def func x a b x np array x return a x b popt pcov curve fit func up x up y 我想用另
  • 将 python2.7 与 Emacs 24.3 和 python-mode.el 一起使用

    我是 Emacs 新手 我正在尝试设置我的 python 环境 到目前为止 我已经了解到在 python 缓冲区中使用 python mode el C c C c将当前缓冲区的内容加载到交互式 python shell 中 显然使用了什么
  • Pandas Merge (pd.merge) 如何设置索引和连接

    我有两个 pandas 数据框 dfLeft 和 dfRight 以日期作为索引 dfLeft cusip factorL date 2012 01 03 XXXX 4 5 2012 01 03 YYYY 6 2 2012 01 04 XX
  • 在Python中连接反斜杠

    我是 python 新手 所以如果这听起来很简单 请原谅我 我想加入一些变量来生成一条路径 像这样 AAAABBBBCCCC 2 2014 04 2014 04 01 csv Id TypeOfMachine year month year
  • 为什么 PyYAML 花费这么多时间来解析 YAML 文件?

    我正在解析一个大约 6500 行的 YAML 文件 格式如下 foo1 bar1 blah name john age 123 metadata whatever1 whatever whatever2 whatever stuff thi
  • 如何使用 Mysql Python 连接器检索二进制数据?

    如果我在 MySQL 中创建一个包含二进制数据的简单表 CREATE TABLE foo bar binary 4 INSERT INTO foo bar VALUES UNHEX de12 然后尝试使用 MySQL Connector P
  • pyspark 将 twitter json 流式传输到 DF

    我正在从事集成工作spark streaming with twitter using pythonAPI 我看到的大多数示例或代码片段和博客是他们从Twitter JSON文件进行最终处理 但根据我的用例 我需要所有字段twitter J
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • 加快网络抓取速度

    我正在使用一个非常简单的网络抓取工具抓取 23770 个网页scrapy 我对 scrapy 甚至 python 都很陌生 但设法编写了一个可以完成这项工作的蜘蛛 然而 它确实很慢 爬行 23770 个页面大约需要 28 小时 我看过scr
  • Python3 在 DirectX 游戏中移动鼠标

    我正在尝试构建一个在 DirectX 游戏中执行一些操作的脚本 除了移动鼠标之外 我一切都正常 是否有任何可用的模块可以移动鼠标 适用于 Windows python 3 Thanks I used pynput https pypi or
  • Python:XML 内所有标签名称中的字符串替换(将连字符替换为下划线)

    我有一个格式不太好的 XML 标签名称内有连字符 我想用下划线替换它 以便能够与 lxml objectify 一起使用 我想替换所有标签名称 包括嵌套的子标签 示例 XML
  • python import inside函数隐藏现有变量

    我在我正在处理的多子模块项目中遇到了一个奇怪的 UnboundLocalError 分配之前引用的局部变量 问题 并将其精简为这个片段 使用标准库中的日志记录模块 import logging def foo logging info fo
  • Python ImportError:无法导入名称 __init__.py

    我收到此错误 ImportError cannot import name life table from cdc life tables C Users tony OneDrive Documents Retirement retirem
  • 如何计算Python中字典中最常见的前10个值

    我对 python 和一般编程都很陌生 所以请友善 我正在尝试分析包含音乐信息的 csv 文件并返回最常听的前 n 个乐队 从下面的代码中 每听一首歌曲都是一个列表中的字典条目 格式如下 album Exile on Main Street
  • Pandas 每周计算重复值

    我有一个Dataframe包含按周分组的日期和 ID df date id 2022 02 07 1 3 5 4 2022 02 14 2 1 3 2022 02 21 9 10 1 2022 05 16 我想计算每周有多少 id 与上周重

随机推荐

  • 过滤可以添加到文本框的字符

    我的表单上有一系列文本框 我的客户希望我过滤掉不允许的字符 例如name字段中不能有符号或数字 现在 他想要它 这样当您尝试输入特殊字符时 它就不会被输入到文本框中 我知道这一点的逻辑 但我不确定如何对其进行编码 基本上需要发生的是当用户输
  • Rails 5 - 多个外键属于同一个表

    我有一个属于 LoadingStation 模型的订单模型 并且 LoadingStation 将在 Order 表中使用两次 所以它看起来像 class CreateLoadingStations lt ActiveRecord Migr
  • 使用DiagrammeR 绘制路径图(SEM)

    我正在测试新的DiagrammeR 包用于结构方程模型可视化的功能 My goal is to get a plot like this Perhaps I need to find a ressource on how to specif
  • 使用 PHP 填充 下拉列表? [复制]

    这个问题在这里已经有答案了
  • PHP 会话未在页面之间保存

    我刚刚购买了一些新的服务器空间 并将一个非常简单的 PHP 应用程序迁移到其中 该应用程序在我的其他服务器上运行良好 由于某种原因 会话数据没有存储在新服务器上页面之间的 SESSION 变量中 我看过这篇类似的文章和许多其他人尝试解决这个
  • 访问 Tomcat 服务器上的 Web 应用程序资源时出现 NoSuchMethodError

    在网上搜索后 这是一个我无法找到答案的问题 我的 Web 应用程序已部署到 tomcat 服务器 我知道这一切都在工作 因为 index jsp 显示文本 但是当我尝试访问我制作的资源时 应该打印出 hello world tomcat 服
  • 重现带有双表头的复杂表格

    锁定时间78 days 有对该问题内容的争议此时正在解决 目前不接受新的答案或互动 我想创建下表 Where Alzheimer s Disease Assessment Scale Cognitive ADAS CogT0 Rey Ost
  • 如何在使用 Select 语句时转义 mysql 中的 value 关键字

    我在使用 Select 语句时遇到问题 其中列名称为 值 并且我想根据 值 列检索值SELECT and LIKE运营商 Code SELECT compo clecompo FROM compo compo ON compo clecom
  • 什么时候需要使用类型注释?

    在读的时候数据类型从 Rust Book 中我注意到有时变量是用类型注释定义的 有时则不是 我什么时候应该使用类型注释 let tup i32 f64 u8 500 6 4 1 let tup 500 6 4 1 let months Ja
  • 如何使用 flex json 序列化对象列表?

    我有一个如下所示的对象列表 List
  • 动态链接标签无法打开网站

    我最近开始使用动态组件 它工作得很好 直到我开始使用动态链接标签 所以这是我的问题 我想通过标签链接打开一个网站 但每次我尝试这样做时 它都会破坏程序并给出错误 System ComponentModel Win32Exception pr
  • JavaBean“useBean类属性classes.UserData的值无效”[重复]

    这个问题在这里已经有答案了 我有两个 JSP 和一个 JavaBean 无法正常工作 我使用的是Tomcat 6 0 第一个 JSP 是 GetName jsp 位于 C Tomcat webapps app1 GetName jsp
  • 从 python 启动 nano 作为子进程,捕获输入

    我试图从Python内部启动一个文本编辑器 nano 让用户输入文本 然后在写出后捕获文本 Control O 我没有与subprocess之前没有模块 也没有管道 所以我不知道下一步要尝试什么 到目前为止我有这个代码 a subproce
  • PDFBOX 具有粗体和普通文本的同一流

    好吧 我一直在使用 PDFBox 但我仍然完全不理解它 但我已经阅读了文档 使用字体和其他一些地方 但我找到了如何从 PDF 中获取文本 它是风格 但我正在创造它 而不是阅读它 我正在尝试做点什么 Like 这 在同一行上有粗体和普通文本
  • 检查 C 中文件是否存在的最佳方法是什么?

    有没有比简单地尝试打开文件更好的方法 int exists const char fname FILE file if file fopen fname r fclose file return 1 return 0 查找access 函数
  • 映射多对多关系

    我在让实体框架处理数据模式中的多对多关系时遇到一些问题 这是我的模型 public class User public int UserId get set public int Username get set public IEnume
  • 我如何找到哪个域从我的服务器请求 iframe 并将域保存在数据库上

    我有一组不同的网站请求iframe由于各种原因从我的服务器上删除了 html 文件 是否可以追踪onload哪个域请求iframe然后将其保存到数据库中 如果该域已存在 则不要将其添加到数据库中 请求 iframe 内容的不是域 而是用户的
  • sqlite 日期排序

    我正在将文件解析到 sqlite 数据库中 其中包含 YYYY MM DD 格式的日期 我想将条目存储到 sqlite 中 以便我可以按日期对条目进行排序 字符串不切割它 在 sqlite 中存储和排序日期的正常协议是什么 应该将日期转换为
  • 舍入错误?

    在我的课程中 我被告知 连续值在内存中近似表示 因此使用浮点数进行计算会涉及舍入误差 这些是位模式中的微小差异 因此测试e f是不安全的 如果e and f是花车 参考Java 这是真的 我使用了比较语句doubles and floats
  • 我可以在 Pool.imap 调用的函数中使用多处理队列吗?

    我正在使用 python 2 7 并尝试在自己的进程中运行一些 CPU 繁重的任务 我希望能够将消息发送回父进程 以使其了解进程的当前状态 多处理队列似乎对此很完美 但我不知道如何让它工作 所以 这是我的基本工作示例 不使用队列 impor