问题标签 [multiprocessing-manager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
31 浏览

python - 使用 multiprocessing.manager 的问题

我在使用管理器时遇到了一些问题。我想让两个进程访问一个列表,一个写一个读它。但是数据已经损坏,所以我试图在这里发布一个示例。现在,我还有另一个问题。我将一个列表作为参数传递给函数,但代码不起作用,并说我传递了两个参数而不是一个。这是代码:导入多处理

0 投票
1 回答
773 浏览

python-3.x - 调用 threading.get_ident() 在不同线程之间返回相同的 ID

当我学习使用SyncManager在多个进程之间共享公共对象时,我注意到Thread在SyncManager的上下文中工作的奇怪行为。

据我了解,SyncManager创建一个服务器进程,接受来自其他进程的连接,然后使用Thread调用目标方法。(https://github.com/python/cpython/blob/master/Lib/multiprocessing/managers.py#L184

但是,在下面的示例代码中,通过调用获得的线程 idthreading.get_ident()结果是相同的值。

我添加了被调用方法的RLock版本以及非锁定版本。从我从日志的时间线中可以看出,它的行为符合预期 - 不同的线程调用该cube方法,但是相同的线程 id 怎么来的?

我了解在最后一个线程终止后,另一个线程中可能会出现相同的线程 ID。但它不能解释没有RLock的行为。

0 投票
1 回答
375 浏览

python - 通过多处理管理器共享自定义类对象

我正在做一个项目,我有非常特定类型的日志,为了让这些日志正常工作,我创建了一个类,它基本上维护一个字典,记录执行的每个步骤所采取的时间和操作。后来用于多种分析目的。稍后我从该字典创建一个 JSON 文件并将其上传到 s3 存储桶。

当我只有一个主要流程时,一切正常。但是为了提高效率,我已经为特定任务包含了多处理。我正在生成 4 个调用相同函数的进程,并且我希望维护日志的类的对象由所有这些进程共享。

我已经完成了其他 StackOverflow 问题,但它们似乎都不起作用。如果您认为这在某个地方有更好的答案,请指导我,我可能已经跳过它。

还有其他类似的方法,然后将此字典转换为 JSON 并上传到 s3 存储桶中。这与 python 日志记录模块无关,因为我有一个非常具体的要求。

我需要这个类的对象由我正在创建的 4 个进程共享。

编辑

为了让人们更容易理解,我真正想要实现的目标可以通过下面给出的两个示例来理解。

单一进程:这行得通

输出:20

多处理:我想要实现的目标

电流输出:10

我需要什么:20

0 投票
1 回答
179 浏览

python - 在 Python(多处理)中正确腌制和取消腌制代理对象?“ConnectionRefusedError:[Errno 111] 解封时连接被拒绝”

我在做 pickle.load() 时收到“ConnectionRefusedError: [Errno 111] Connection denied”

比实际上是什么意思?我如何正确地解开这样的物体?我知道我试图解开的对象包含一些有用的数据,但我无法得到它。

我将此对象传递给线程和子进程

我做错了什么?

0 投票
1 回答
782 浏览

python - 在 Python multiprocessing.Pool 中共享可变全局变量

我正在尝试dict使用以下代码更新共享对象 (a)。但它不起作用。它给了我输入dict作为输出。

编辑:Exxentially,我在这里想要实现的是将数据(列表)中的项目附加到字典的列表中。数据项在字典中给出索引。

预期输出{'2': [2], '1': [1, 4, 6], '3': [3, 5]}
注意:方法 2 引发错误TypeError: 'int' object is not iterable

  1. 方法一

    /li>
  2. 方法二
0 投票
1 回答
160 浏览

python - 重新初始化后,多处理管理器的列表不保存值

我有这种情况,需要重新初始化多进程管理器的列表[]以使其成为空白列表,但这样做之后它不再修改列表。

它确实在定义中本地修改它,在进程退出后不保存这些值,而是显示它一直保存到重新初始化之前的旧值。为什么会发生这种情况以及如何解决?

这个的输出是

0 投票
1 回答
562 浏览

python - 带有管理器和异步方法的 multiprocessing.pool

我正在尝试使用 Manager() 在进程之间共享字典并尝试了以下代码:

使用 map_async 和 apply_async,打印的结果总是不同的(例如 {'x': 3838}, {'x': 3770})。但是,使用 map 会给出预期的结果。另外,我尝试使用 Process 而不是 Pool,结果也不同。

有什么见解吗?非阻塞部分和竞态条件不是由经理处理的吗?

0 投票
0 回答
168 浏览

python - 如何使用 Python 中的多处理管理器使用来自另一个进程的变量更新 matplotlib.Funcanimation 中的数据?

基本上我想做的是实时绘制一个图表,更新/动画跨多个进程共享的数据。我使用了 python 多处理模块中的 Manager 并共享了一个wave列表(即一个数组),该列表在while 循环中的另一个进程中更新/修改。

看来,当我运行 FuncAnimation 函数时,我只能根据同一进程中的局部或全局变量更新显示的数据。这是我的代码:

任何帮助将不胜感激。我一直在考虑的一件事是在一个进程中使用多线程在一个线程中运行动画,并在另一个线程中更新全局变量。

0 投票
0 回答
118 浏览

python - 在python中的进程和线程之间共享队列

我正在编写一个同时使用多处理和多线程的程序(python 2.7),多处理是使用 Celery 库完成的。我有一个必须使用多线程并行化的函数,因此我实现了一个共享的“输入”队列,该队列存储线程池的参数(使用 python multiprocessing.Manger 队列)以及我做出“响应”的每个进程队列,线程根据作业来自的源进程将计算结果存储在特定的“响应队列”中。问题是将结果存储在响应队列中导致内存泄漏, https://bugs.python.org/issue33081 我的问题是我可以用什么替代品来替换那些 python multiprocessing.Manager 队列,我考虑过使用 Pathos multiprocess.Manager 队列和管道(管道很适合我,因为有一个发布者和一个消费者)但有没有其他选项我可以在不重构代码的情况下尝试?谢谢 !

0 投票
1 回答
123 浏览

python-2.7 - 添加将字典附加到另一个 multiprocessing.managers.DictProxy 中的列表

我有一本字典,它是 multiprocessing.managers.DictProxy 。字典看起来像:

在另一个函数中,我为列表收集产品,fda_product然后将其附加到列表中。

我已经测试以确保产品数据内部有数据并且密钥是正确的。当我打印列表时,列表不会附加到列表中,结果是一个空列表。谢谢您的帮助