问题标签 [parallel-python]

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 投票
5 回答
88677 浏览

python - 并行 Python:什么是回调?

Parallel Python中,它在提交函数中有一些称为回调文档)的东西,但它似乎并没有很好地解释它。几天前我在他们的论坛上发了帖子,但没有收到回复。有人会解释什么是回调以及它的用途吗?

0 投票
2 回答
3638 浏览

python - 并行 Python:如何为“提交”提供参数?

这只是带有 parallel-python 标签的第二个问题。在查看了文档并在谷歌上搜索了该主题后,我来到了这里,因为这是我获得最佳答案和建议的地方。

以下是向pp提交所有相关信息的API(我认为它被称为)。

这是我的提交声明及其参数:

中所有大写depfuncs的名称都是类的名称。我不确定将课程放在哪里,或者即使我需要将它们包含在globals()字典中。但是当我用depfuncs()空运行它时,它会引发诸如“ Tree not defined”之类的错误(例如)。

现在,key_seq是一个生成器,所以我必须使用它的一个实例才能使用.next()

ks中定义globals()。当我没有在其他任何地方包含它时,我收到一个错误说' ks is not defined'。当我包含ksin 时depfuncs,这是错误:

我很确定arg指的是ks. 那么,我该在哪里.submit()讲述ks呢?我不明白应该去哪里。谢谢。

0 投票
3 回答
740 浏览

python - 构建程序。Python 中的类和函数

我正在编写一个程序,该程序使用遗传技术来演化方程。我希望能够将函数 'mainfunc' 提交给 Parallel Python 'submit' 函数。函数“mainfunc”调用了在 Utility 类中定义的两个或三个方法。它们实例化其他类并调用各种方法。我想我想要的就是一个 NAMESPACE 中的所有内容。所以我已经实例化了函数'mainfunc'中的一些(也许应该是全部)类。我将实用程序方法称为“generate()”。如果我们要遵循它的执行链,它将涉及代码中的所有类和方法。

现在,方程存储在树中。每次生成、变异或杂交一棵树时,都需要为节点提供一个新键,以便可以从树的字典属性中访问它们。“KeySeq”类生成这些密钥。

在 Parallel Python 中,我将发送多个 'mainfunc' 实例到 PP 的 'submit' 函数。每个人都必须能够访问“KeySeq”。如果他们都访问相同的 KeySeq 实例,这样返回的树上的所有节点都没有相同的键,那就太好了,但如果有必要我可以绕过它。

所以:我的问题是关于把所有东西都塞进mainfunc。谢谢(编辑)如果我没有在 mainfunc 中包含所有内容,我必须通过在各个地方传递各种争论来尝试告诉 PP 有关依赖函数等。我试图避免这种情况。

(后期编辑)如果 ks.next() 在 'generate() 函数内被调用,它会返回错误'NameError: global name 'ks' is not defined'

0 投票
1 回答
270 浏览

python - 使用 Parallel Python 时,有什么方法可以判断作业在哪台机器上运行?

我已经使用并行 python 编写了一个简单的程序,并且一切正常。但是,主要是出于好奇,我想知道每个任务在哪台机器上运行,以及花费了多长时间。

有没有办法以编程方式获取返回的作业的这些信息?

0 投票
2 回答
3919 浏览

python - 赋值前引用的局部变量“结果”

我在尝试使用 PP 时遇到了多个问题。我正在运行 python2.6 和 pp 1.6.0 rc3。使用以下测试代码:

给我以下结果:

任何帮助是极大的赞赏。

0 投票
0 回答
1141 浏览

sockets - 并行python错误:RuntimeError(“套接字连接断开”)

我正在使用一个简单的程序来发送一个函数:

结果是:

0 投票
1 回答
152 浏览

python - 对象不会死(我仍然找不到它的引用)

我正在使用 parallel-python 并在函数中启动一个新的作业服务器。在函数结束后它仍然存在,即使我没有将它从函数中返回(我使用了weakref 来测试它)。我猜在某个地方仍然有一些对这个对象的引用。我的两个理论:它启动线程并记录到根记录器。

我的问题:我能否以某种方式找出在哪个命名空间中仍然有对该对象的引用。我有弱参考参考。有谁知道如何分离记录器?人们还有哪些其他调试建议?

这是我的测试代码:


在此先感谢沃尔夫冈

0 投票
2 回答
2014 浏览

python - 使用 Parallel Python 记录工作进程

我继承了在集群上使用 Parallel Python 对一些科学计算的维护。使用 Parallel Python,作业被提交给 ppserver,它(在这种情况下)与其他计算机上已经运行的 ppserver 进程对话,将任务分发给 ppworkers 进程。

我想使用标准库日志记录模块从提交到 ppserver 的函数中记录错误和调试信息。由于这些 ppworkers 作为单独的进程(在单独的计算机上)运行,我不确定如何正确构建日志记录。我必须为每个进程登录到单独的文件吗?也许有一个日志处理程序可以让它变得更好?

另外,我想报告什么计算机上的哪个进程发生了错误,但是我正在编写登录的代码可能不知道这些事情;也许这应该发生在 ppserver 级别?

(在 Parallel Python Forums 上交叉发布的问题版本,如果我从非 SO 用户那里得到有关此问题的信息,我将在此处发布答案)

0 投票
1 回答
526 浏览

python - 为什么 Parallel Python 会以它的方式工作?

在 Parallel Python 中,为什么有必要在作业提交调用中包装函数传递所需的任何模块以及变量和命名空间 - 保留模块级“全局”变量的必要性有多大?(如果这就是发生的一切)

提交功能:

0 投票
2 回答
973 浏览

python - 令人费解的并行 Python 问题 - TRANSPORT_SOCKET_TIMEOUT

以下代码似乎不适用于我。它需要在网络上的另一台计算机上启动 ppserver,例如使用以下命令:

启动此服务器后,在我的机器上运行以下代码:

奇怪的部分:查看 /home/tomb/statusfile.txt,我可以看到它被多次写入,就好像该函数正在运行多次一样。我已经观察到这种情况持续了一个多小时,但从未见过job()回报。

奇数:如果我将 testfunc 定义中的迭代次数更改为 10**8,则该函数只运行一次,并按预期返回结果!

似乎是某种竞赛条件?只需使用本地内核就可以了。这是 pp v 1.6.0 和 1.5.7。

更新:大约 775,000,000:我得到不一致的结果:两个工作重复一次,第一次完成。

一周后的更新:我已经编写了自己的并行处理模块来解决这个问题,并且将来会避免使用并行 python,除非有人弄清楚这一点——我会抽空再看看它(实际上是深入研究源代码)代码)在某些时候。

几个月后更新:没有剩余的难受,Parallel Python。我计划一有时间迁移我的应用程序就搬回去。标题编辑以反映解决方案。