问题标签 [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.
python - 使用 python.multiprocessing,如何在当前进程中创建代理以传递给其他进程?
我正在使用multiprocessing
Python 中的库。我可以看到如何定义从函数返回的对象应该创建代理,但我希望将当前进程中的对象变成代理,以便我可以将它们作为参数传递。
例如,运行以下脚本:
...我得到以下输出...
...但我希望最后一行输出来自_MainProcess
.
我可以创建另一个进程并从那里运行它,但我试图将需要在进程之间传递的数据量保持在最低限度。该Manager
对象的文档提到了一种serve_forever
方法,但似乎不受支持。有任何想法吗?有人知道吗?
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给出的解决方案有效,但无法避免竞争条件
python - 使用多处理时出现奇怪的解酸错误
使用多处理时出现以下错误:
我完全不知道这意味着什么,尽管这听起来像是 C 级别的问题。任何人都可以对此有所了解吗?
更新:好的,所以我想出了如何解决这个问题。但我还是有点困惑。我正在返回这个类的一个实例:
如果我返回这个对象的一个实例,我会得到错误。但是,如果我调用to_dict
并返回字典,它就可以工作。我究竟做错了什么?
python - 是否可以在子进程中运行函数而无需线程或编写单独的文件/脚本。
我只找到了有关使用单独脚本打开子进程的文档。有谁知道如何传递函数对象,甚至是传递函数代码的简单方法?
python - 获取子进程的pid
我正在使用 python 的多处理模块来生成新进程
如下 :
我想获取 iostat 命令的 pid 或使用多处理模块执行的命令
当我执行:
它给了我运行这个命令的子shell的pid。
任何帮助都是有价值的。
提前致谢
python - 多处理具有多个输入的函数
在 Python 中,该multiprocessing
模块可用于在一系列值上并行运行函数。例如,这会生成 f 的前 100000 次评估的列表。
当 f 接受多个输入但只有一个变量变化时,是否可以做类似的事情?例如,您将如何并行化:
python - 如何使用远程管理器传递 python 对象?
我正在用 python 开发一个简单的客户端-服务器应用程序。我正在使用管理器来设置共享队列,但我不知道如何将任意对象从服务器传递到客户端。我怀疑它与 manager.register 函数有关,但在multiprocessing 文档中并没有很好地解释。那里唯一的例子使用队列,没有别的。
这是我的代码:
还有一个简单的服务器...
还有一个简单的客户...
当我运行它时,它会崩溃:
为什么 python 对 Queues 或 processor_function 没有问题,但对 object 参数感到窒息?谢谢!
python - 如何使用带有多个参数的多处理 pool.map
在 Pythonmultiprocessing
库中,是否有pool.map
支持多个参数的变体?
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
能够正常工作以充分利用多处理,而不必每次都解决问题。
python - 无需通过 IP 堆栈的远程 python 管理器
Pythonmultiprocessing
包支持远程管理器功能,其中一个 python 进程可以与另一个进程进行IPC,但是从他们的示例看来,这必须通过操作系统的 IP 堆栈。
假设两个进程是本地的,有没有一种方法可以在不通过 IP 堆栈的情况下使用远程管理器,从而使其更快?