问题标签 [pathos]
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 - 如何运行嵌套的、分层的 pathos 多处理地图?
在构建了关于 dill 序列化/酸洗代码的重要部分之后,我还尝试使用 pathos 多处理来并行化我的计算。Pathos 它是莳萝的自然延伸。
尝试运行嵌套时
在另一个里面ProcessingPool().map
,然后我收到:
例如:
产量
我尝试使用amap(...).get()
但没有成功。这是在pathos 0.2.0上。
允许嵌套并行化的最佳方法是什么?
更新
在这一点上我必须诚实,并承认我已经"daemonic processes are not allowed to have children"
从悲痛中删除了这个断言。我还构建了一些级联KeyboardInterrupt
到工人和工人的东西......下面的部分解决方案:
似乎可以在控制台和 IPython 笔记本(带有停止按钮)上工作,但不确定在所有极端情况下它是否 100% 正确。
python - Pathos、Dask、futures,哪一种用于并行集群应用?
我在这里很困惑。我有一个 CPU 受限的应用程序,所以我开始使用多进程实现并行化来克服 GIL 问题。
我第一次尝试使用multiprocessing
,futures
但遇到了酸洗问题,所以我选择了pathos
使用哪个dill
作为pickle
替代品。
一切正常,但我想知道我是否正在使用最“面向未来”的解决方案。我也见过dask
,但我不知道它是否会在酸洗类问题的情况下起作用(参见Python: (Pathos) Multiprocessing vs. class methods)。从文档中,它使用了futures
所以我假设它不会完成这项工作。
其次,我希望能够一次使用两台服务器,并且我已经看到pathos
(也dask
)可以做到这一点,但我不明白这是如何工作的。这个答案https://stackoverflow.com/a/26948258/6522112仅显示如何使用一台服务器。使用2个或更多怎么样?我找不到任何关于此的示例,尽管如包装信息所述,这似乎是可能的。
谢谢你的帮助!
python - Pathos 处理池递归限制
我有一个任务要与悲情并行。当我运行非并行版本时,它运行得很好。但是,运行 1 个进程的 pathos 池会导致 RuntimeError:超出最大递归深度。
例如:
在我尝试调试为什么会发生此错误时,我尝试映射一个对象的列表。这无需多处理即可工作
t1.getValue
要应用的昂贵功能在哪里。我有一个完整的列表,这些函数适用于相同的两个参数。这是并行处理的用武之地。但是以下引发错误:
有趣的是它getValue
不是递归的。我知道这有时会在达到堆栈限制时发生。
如何确定getValue
导致错误的哪一部分导致多处理工作?我被卡住了,因为我不知道如何从这一点上调试它。将数据传递给进程时,这是否可能实际上是由酸洗错误引起的?getValue
确实在幕后处理了一些大型结构。
python-2.7 - 使用 pathos.multiprocessing 时出现 cPickle 错误?
我正在尝试使用多处理来加快 pandas excel 的阅读速度。但是,当我使用多处理时,我收到错误 cPickle.PicklingError: Can't pickle : attribute lookup __builtin__.function failed
当我尝试运行以下命令时: import dill from pathos.multiprocessing import ProcessPool
pathos.multiprocessing 不是旨在解决这个问题吗?我在这里忽略了什么吗?
编辑:完整的错误代码跟踪到
python-2.7 - cPickle 错误与 pathos 多处理?
我正在尝试使用多处理来加快 pandas excel 的阅读速度。但是,当我使用多处理时,我收到错误 cPickle.PicklingError: Can't pickle : attribute lookup __builtin__.function failed
当我尝试运行以下命令时: import dill from pathos.multiprocessing import ProcessPool
pathos.multiprocessing 不是旨在解决这个问题吗?我在这里忽略了什么吗?
编辑:悲情作者说它不是重复的。glob.glob(/*) 是我没有提供存储文件的目录,因为它与问题无关。
linux - Pathos:在 Linux 上强制生成
我有可以在 Windows 上运行的 Python 代码,但是在 Linux 上运行时它只是挂起。我正在使用 JPype,所以我怀疑多个共享进程尝试使用同一管道访问 Java 可能存在一些问题(创建了不同的进程但挂在 JPype 行)。有什么方法可以强制在 Pathos 中生成以复制 Windows 实现?(例如,常规多处理库中的 set_start_method 或 get_context?)
谢谢。
python - 将python多处理与类函数一起使用时出现酸洗错误
我有三个脚本,scheduler.py
这是一个基于multiprocessing.Process
and的并行任务运行multiprocessing.Pipe
器,第二个脚本是simulation.pyx
一个包含一些我想通过并行执行的类和函数的脚本scheduler.py
,最后是一个小的主脚本,我在其中创建一个实例并行化类scheduler.py
,将它传递给类simulation.pyx
并运行整个事情。
当目标并行函数位于顶层时,simulation.pyx
一切正常,但是一旦我尝试使用scheduler.py
类函数,simulation.pyx
就会出现酸洗错误。
由于代码有几千行,我只给出一些概念代码:
small_main_script.py
:
simulation.pyx
:
问题是,如果我使用无用的虚拟函数,比如
并将它放在顶层,即在类之外,并行化工作正常,但是一旦我把它放在类中,Main
我就会得到一个酸洗错误。如果我使用在类中定义的真实目标函数Main
并且我不想将其移动到顶层,我会得到同样的错误。以下是我sleep(self,job)
在类中使用虚拟函数时发生的情况Main
。当它在课堂之外时,它工作得很好。
我正在使用 Python 2.7
更新
我设法进一步隔离了这个问题。使用第三方包时pathos multiprocessing
,我可以腌制类函数。现在的问题似乎是在使用作为类实例的函数参数时出现错误。
python - 使用 pathos.multiprocessing 的 AssertionError
我正在使用python 2.7。这是我的一些代码:
但是,当我运行它时,我得到一个空白AssertionError
:
此错误似乎类似于此问题中描述的错误,尽管那里的修复更为明显。我运行了上面的代码删除pool.close()
,pool.join()
但得到了相同的结果。
想法?
python - 如何使用嵌套池将所有 cpus 与 pathos 一起使用
回答有关用于多处理的嵌套池的问题:
https://stackoverflow.com/a/40852258/6522112
我提出的代码没有按照我想要的方式响应。也就是说 ifThreadingPool(8)
和ProcessingPool(3)
,我预计进程数是 24,但我只有 3 个!所以我继续使用这个https://stackoverflow.com/a/8963618/6522112,它通过将守护进程标志设置为 False 来允许嵌套进程池。这非常有效,但是:
- 只得到 3 个进程而不是 24 个进程是否正常?
- 我用这个黑客做对了吗?
- 最终目标是使用集群上的多个节点来执行此操作。这会阻止它吗?
- 我不确定
map
要考虑的类型,但似乎只有imap
组合才能发挥作用。有什么见解吗?
这是使用pathos
来自@MikeMcKerns 而不是简单的多处理的修改后的代码:
如果你想使用它要小心,你必须终止内部池,否则你会得到僵尸:
python - 当我使用 pathos 时出现 importerror
我尝试使用 pathos 进行多处理,但是当我启动该
过程时,我得到了ImportError:no module named pp
,请帮助我。我从 github 下载 pathos,通过 python setup.py 安装python version 2.7.8
,,