问题标签 [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 - Python看门狗产生多处理
我正在将文件(以非常快的速度)写入特定目录。我想监视新文件的目录,然后生成一个运行外部脚本的进程。现在,我遇到了一个酸洗错误(即使我使用的是 Pathos)
我需要帮助修复酸洗错误,这可能导致我不得不重新考虑我在做什么,这很好。
这是我到目前为止所拥有的:
python - python中的内存高效SMP
我有一个计算量很大的项目,似乎是并行化的一个很好的候选者。该代码使用大量 GIS 等值线,单个进程占用大约 1.5 GB 内存。可以并行化的逻辑有两个级别:一个将项目区域分成更小(但仍然相当大)的区域的外部级别,以及一个以非常短的段执行大量数学运算的内部循环。
由于 pickle,尝试在外循环上使用 concurrent.futures 失败。Pathos 运行并创建了多个进程,但使用了大量内存并且实际上速度较慢。我假设减速是由于 dill 序列化和重新创建非常大的对象。
我还没有尝试并行化内部循环,但应该能够将代码和轮廓分解成相对较小的对象(~10 KB),不包括外部模块(匀称)。虽然 python 有大量的并行处理选项,但我还没有找到关于处理对象和管理内存的最佳方式的很好的讨论。有什么好的包/方法可以有效地将一个小对象从一个更大的进程中拆分成一个新的进程?
我认为最好使用两个级别的并行化,尽管我不确定并且需要做一些分析。外部循环可以稍微提高内存效率,但将其拆分为多个进程可能不现实。内部循环应该很容易分解成小的、内存效率高的部分,我只是不确定要使用的最佳包。
编辑:绝大多数处理都在 shapley 包中,它是 C 语言中 GEOS 的 python 前端(我认为)。我目前正在使用 python 2.7,但如果它是有益的,我愿意切换到 3。
python - 使用多处理库时,如何将资源绑定到特定进程?
假设我有 50 个进程,我正在使用它们对(比如说)20000 个不同的输入值进行操作。(我正在使用 pathos 库,我认为它的操作类似于 Python 中的多处理库。)
我想为每个进程创建一个 SQLAlchemy 数据库引擎(但我没有资源为每个输入值创建一个)。然后,我希望使用该过程处理的所有输入都可以与同一个数据库引擎一起使用。
我怎样才能做到这一点?
python - pathos.ProcessingPool 和 pickle 之间的交互
我有一个需要运行的计算列表。我正在使用它们并行化它们
helperFunction
确实创建了一个名为 的类Parameters
,该类与在同一文件中定义
到目前为止,一切都很好。helperFunction
会根据Parameters
对象做一些计算,改变它的一些属性,最后使用pickle
. 这是进行保存的辅助函数(来自不同的模块)的相关摘录:
当它到达时pickle.dump()
,它会引发一个难以调试的异常,因为调试器不会进入实际面临该异常的工作人员。因此,我在转储发生之前创建了一个断点,并手动输入了该命令。这是输出:
helperFunction
奇怪的是,当我不并行化(即手动循环)时,这不会发生。我很确定我打开的是正确的Parameters
(而不是父类)。
我知道如果没有可重现的示例,很难调试事物,我不希望这部分有任何解决方案。也许更普遍的问题是:
pickle.dump()
并行化通过另一个模块使用的代码时需要注意什么?
python - 多处理,有问题
我是一个相当新手的程序员,我第一次接触到多处理。在遇到常见的酸洗错误后,我在这里搜索并发现 Pathos 可能是最好的使用方法。
完整的应用程序的要点是它使用 ssh 连接到一组服务器,将数据拉出并将其存储到数据库中。它工作得很好,但如果它运行多处理显然是有益的。
原始函数调用如下所示:
简而言之,SQL 查询给了我一个字典列表,我为每个记录提供 pullNewData() 一个字典,它执行、连接、提取所有内容并更新数据库。
我宁愿不重写几千行代码,所以我希望适应它会很容易:以下所有示例都有:
在顶部。我试过了:
即使尝试/除外,它也默默地失败了
同样,静默失败:
然而:
工作,但只是依次经历了每一个。
在绝望中,我什至尝试将其放入列表理解中(是的,这非常丑陋,但那时我会做任何事情)
那么,我该怎么做呢?我如何让它以并行方式为每条记录启动一个新连接?
python - multiprocessing numpy not defined error
I am using the following test code:
It gives error:
What am I doing wrong in the code?
Edit: Why was this question voted down twice?
I have numpy installed and my interpreter has been using it correctly until I try to do it for multiprocessing. I have been coding with same install for a while.
python - Python 多处理和悲怆:导入错误
我正在使用多处理和 pathos 编写一些 python 代码。我编写了一个小测试程序来习惯使用多处理,它在我的本地机器上运行良好,但它拒绝在不同的集群上运行。
我收到以下错误:
但是当我做一个
pathos 和 multiprocessing 模块显然都在那里:
任何可能发生这种情况的好主意都将受到欢迎!
小测试代码是:
python - pathos 多处理对象
我有一段代码正在使用 pathos multiprocessing 编写,这会产生错误。问题是使用 pathos.multiprocessing.pool 在一组对象上分发进程似乎在与类定义中初始化的对象不同的对象上完成工作。
在和 in__init__
中初始化的配置对象是相同的。所以这些配置是在调用中使用的那些:run_multi()
new_forces
pool.map
但是定义中引用的对象run
占用了不同的内存部分。
任何可能导致这种情况的想法将不胜感激!
谢谢!
python - pathos.multiprocessing 在 Linux 平台上运行时抛出 pickle 错误
我正在尝试使用 python 中的模块dispy在集群中的多个节点之间分配作业。我正在做两级并行执行。作业提交中的第一级,每个节点上的第二级。
最初我在调用create_cluster_worker
函数上直接使用多处理模块。但是,我从_dbm
无法腌制的多处理库中得到腌制错误。在线搜索后, pathos.multiprocessing 似乎是要走的路。所以我尝试了以下,但也得到了错误。
错误如下图所示:
不知道如何跳过此错误。任何建议都会非常受欢迎!
python - 如何将关键字列表传递给 pathos.multiprocessing?
我正在使用 pathos.multiprocessing 来并行化需要使用实例方法的程序。这是一个最小的工作示例:
打印的结果是(如预期的那样):
但是,在此调用中map
最后两个参数的顺序很重要,如果我这样做:
我得到:
而我想获得与第一个结果相同的结果。apply_async
kwds
该行为与标准模块中的行为相同multiprocessing
,即传递一个字典列表,其中每个字典中的键是关键字名称,项是关键字参数(请参阅 参考资料allks
)。请注意,标准模块multiprocessing
不能使用实例方法,因此甚至不能满足最低要求。
暂定为: result = pool.map(dummy, args, kwds=allks) # 这不起作用