问题标签 [python-multiprocessing]

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 回答
3179 浏览

python - 使用 python.multiprocessing,如何在当前进程中创建代理以传递给其他进程?

我正在使用multiprocessingPython 中的库。我可以看到如何定义从函数返回的对象应该创建代理,但我希望将当前进程中的对象变成代理,以便我可以将它们作为参数传递。

例如,运行以下脚本:

...我得到以下输出...

...但我希望最后一行输出来自_MainProcess.

我可以创建另一个进程并从那里运行它,但我试图将需要在进程之间传递的数据量保持在最低限度。该Manager对象的文档提到了一种serve_forever方法,但似乎不受支持。有任何想法吗?有人知道吗?

0 投票
3 回答
1503 浏览

python - python多处理管理器和复合模式共享

我正在尝试通过多处理管理器共享复合结构,但在尝试仅使用一种复合类方法时,我感到“ RuntimeError: maximum recursion depth exceeded ”有问题。

该类是来自code.activestate的令牌,并在包含到管理器之前由我测试。

在将类检索到进程中并调用其addChild()方法时,我保留了RunTimeError,而在进程之外它可以工作。

复合类继承自一个 SpecialDict 类,该类实现了一个 ** ____getattr()____ ** 方法。

有可能在调用addChild()时,python 的解释器会寻找不同的 ** ____getattr()____ **,因为经理没有代理正确的解释器?

如果是这样我不清楚代理该类/方法的正确方法

以下代码完全重现了这种情况:

1)这是manager.py:

2)我想在这个consumer.py中使用复合:

3)通过controller.py运行所有启动:

按照 AlberT 的建议,查看有关如何为 CompositeDict() 类进行代理的相关问题。

tgray给出的解决方案有效,但无法避免竞争条件

0 投票
3 回答
3709 浏览

python - 使用多处理时出现奇怪的解酸错误

使用多处理时出现以下错误:

我完全不知道这意味着什么,尽管这听起来像是 C 级别的问题。任何人都可以对此有所了解吗?

更新:好的,所以我想出了如何解决这个问题。但我还是有点困惑。我正在返回这个类的一个实例:

如果我返回这个对象的一个​​实例,我会得到错误。但是,如果我调用to_dict并返回字典,它就可以工作。我究竟做错了什么?

0 投票
3 回答
112058 浏览

python - 是否可以在子进程中运行函数而无需线程或编写单独的文件/脚本。

我只找到了有关使用单独脚本打开子进程的文档。有谁知道如何传递函数对象,甚至是传递函数代码的简单方法?

0 投票
5 回答
38413 浏览

python - 获取子进程的pid

我正在使用 python 的多处理模块来生成新进程

如下 :

我想获取 iostat 命令的 pid 或使用多处理模块执行的命令

当我执行:

它给了我运行这个命令的子shell的pid。

任何帮助都是有价值的。

提前致谢

0 投票
5 回答
25127 浏览

python - 多处理具有多个输入的函数

在 Python 中,该multiprocessing模块可用于在一系列值上并行运行函数。例如,这会生成 f 的前 100000 次评估的列表。

当 f 接受多个输入但只有一个变量变化时,是否可以做类似的事情?例如,您将如何并行化:

0 投票
1 回答
4004 浏览

python - 如何使用远程管理器传递 python 对象?

我正在用 python 开发一个简单的客户端-服务器应用程序。我正在使用管理器来设置共享队列,但我不知道如何将任意对象从服务器传递到客户端。我怀疑它与 manager.register 函数有关,但在multiprocessing 文档中并没有很好地解释。那里唯一的例子使用队列,没有别的。

这是我的代码:

还有一个简单的服务器...

还有一个简单的客户...

当我运行它时,它会崩溃:

为什么 python 对 Queues 或 processor_function 没有问题,但对 object 参数感到窒息?谢谢!

0 投票
22 回答
775551 浏览

python - 如何使用带有多个参数的多处理 pool.map

在 Pythonmultiprocessing库中,是否有pool.map支持多个参数的变体?

0 投票
1 回答
25162 浏览

python - 使用多处理时出现 PicklingError

在多处理模块中使用Pool.map_async()(和)时我遇到了麻烦。Pool.map()我已经实现了一个并行循环函数,只要函数输入Pool.map_async是一个“常规”函数,它就可以正常工作。当函数是例如类的方法时,我得到一个PicklingError

我只使用 Python 进行科学计算,所以我对酸洗的概念不太熟悉,今天刚刚了解了一点。我已经查看了几个以前的答案,例如Can't pickle <type 'instancemethod'> when using multiprocessing Pool.map(),但我无法弄清楚如何使其工作,即使按照答案中提供的链接进行操作.

我的代码,其目标是使用多核模拟 Normal rv 的向量。请注意,这只是一个示例,在多核上运行可能甚至没有回报。

Can't pickle <type 'instancemethod'> when using multiprocessing Pool.map()中的问题答案中提供的链接之后,Steven Bethard(几乎在最后)建议使用该copy_reg模块。他的代码是:

我真的不明白如何利用它。我唯一能想到的就是把它放在我的代码之前,但它没有帮助。一个简单的解决方案当然是只使用可行的解决方案并避免参与copy_reg. 我更感兴趣的是copy_reg能够正常工作以充分利用多处理,而不必每次都解决问题。

0 投票
0 回答
190 浏览

python - 无需通过 IP 堆栈的远程 python 管理器

Pythonmultiprocessing支持远程管理器功能,其中一个 python 进程可以与另一个进程进行IPC,但是从他们的示例看来,这必须通过操作系统的 IP 堆栈。
假设两个进程是本地的,有没有一种方法可以在不通过 IP 堆栈的情况下使用远程管理器,从而使其更快?