问题标签 [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 投票
2 回答
227 浏览

python - python的pp模块上的PicklingError

我正在使用python的pp模块。我需要做的是并行运行“scipy.optimize”的“fmin”函数。我正在像这样导入 fmin:

接下来,我定义了一个执行 fmin 函数的函数,如下所示:

为了使其并行运行,我正在使用:

然后我在 job5 的模块中得到一个 PicklingError。我猜那是“scipy.optimize”。我也尝试过import scipy.optimize as sth,但 job_server.submit 不接受“sth”作为模块。有什么解决办法吗?

谢谢你。

0 投票
2 回答
3364 浏览

python - 太多打开的文件并行 Python 子进程错误

类似问题的问题: Parallel Python - too many files and Python too many open files (subprocesses)

我正在使用 Parallel Python [V1.6.2] 来运行任务。该任务处理输入文件并输出日志/报告。假设有10个文件夹,每个文件夹有5000~20000个文件,并行读取、处理和写出日志。每个文件大约 50KB ~ 250KB

运行约 6 小时后,Parallel Python 失败并出现以下错误。

虽然我理解,这可能是这里http://bugs.python.org/issue2320指出的子进程中的问题,但是,似乎解决方案只是 Py V3.2 的一部分。我目前绑定到 Py V2.7。

我想知道以下建议是否有帮助:[1] http://www.parallelpython.com/component/option,com_smf/Itemid,1/topic,313.0

*) 在 /usr/local/lib/python2.7/dist-packages/pp-1.6.2-py2.7.egg/pp.py 的 destroy() 方法中添加 worker.t.close()

*) 在 /usr/local/lib/python2.7/dist-packages/pp-1.6.2-py2.7.egg/ppauto.py 中增加 BROADCAST_INTERVAL

我想知道 Python V2.7 中是否有可用的修复程序/解决此问题的方法。

提前致谢

0 投票
1 回答
1381 浏览

python - 使用并行 python 和类

我很震惊地发现互联网上关于并行 python (PP) 和处理类的教程和指南很少。我遇到了一个问题,我想启动同一个类的几个实例,然后检索一些变量(例如并行读取 5 个数据文件的实例,然后检索它们的数据)。这是一段简单的代码来说明我的问题:

为了您的方便,我添加了评论。我在这里做错了什么?

0 投票
1 回答
415 浏览

python - pp下并行Python使分形和资源序列化

我制作了一个 python 脚本来制作分形图像。

我尝试使用 pp python 模块来加快这个源代码。

最大的问题是:image.putpixel((x, y), (i % 8 * 16, i % 4 * 32,i % 2 * 64))。这行源代码在使用时给了我一些关于: cPickle.UnpickleableError: Cannot pickle objects

我认为这个资源不能在 pp 下序列化。知道吗?谢谢你。问候。

我的源代码:

0 投票
1 回答
185 浏览

python - 如何告诉并行python进程在哪个文件夹中搜索模块?

我正在一个计算机集群上工作,它在通常的文件夹 (/usr/lib64/....) 中安装了 NumPy 1.4.1。因为我想使用 NumPy 1.7.0,所以我已经安装了它/.../myPath,并添加export PYTHONPATH=/.../myPath到我的.bashrc,这样使用import numpy将自动加载 NumPy 1.7.0。这工作正常,除了使用并行 python时的特殊性。为了在每个进程中加载​​正确的 NumPy 模块,我修改sys.path了 ,因为这些进程似乎忽略了该$PYTHONPATH变量:

输出如所愿:

但是,当我用这样的ndarray参数调用它时

输出变为

我的解释:子进程一被调用就会收到一个参数,因此在我有机会修改之前numpy.ndarray搜索一个名为的模块。有想法该怎么解决这个吗?numpysys.path

0 投票
2 回答
1003 浏览

python - 如何动态扩展 StarCluster/qsub/EC2 以跨多个节点运行并行作业

我是使用 Startcluster/qsub/grid engine 来运行并行作业的新手,我尝试阅读其他一些相同的帖子。我仍然不确定如何为我的特定需求构建可扩展的解决方案。在继续之前,我想接受更多建议。

以下是我的要求:

  1. 我有一个巨大的 tar 文件 [~40 - 50 GB,它可以达到 100GB] -----> 我在这里无能为力。我接受了一个巨大的单个 tar 文件作为输入。

  2. 我必须解压并解压缩它----->我运行 tar xvf tarfilename.tar | 并行 pbzip -d 解压缩和解压缩相同。

  3. 这种解压缩的输出是几十万个文件,大约 500,000 个文件。

  4. 必须处理此未压缩文件。我有模块化代码,可以接收每个文件并处理它并输出 5 个不同的文件。

Tar File -----Parallel Uncompression---> Uncompressed Files -----Parallel Processing ---> 每个文件处理 5 个输出文件

  1. 我目前有一个在 16 核、16GB 内存上运行的并行 python 脚本,它接收这个未压缩文件列表并并行处理相同的文件。

  2. 问题是我如何无缝扩展。例如,如果我的代码已经运行了 10 个小时,并且我想再添加一台 8 核机器,我不能在并行 python 中执行它,因为我必须提前知道处理器的数量。

  3. 同时,当我在当前集群中动态添加更多节点时,数据的可访问性和读写操作如何?

因此,我开始阅读并使用 starcluster 和 qsub 进行基本实验。虽然我看到我可以通过 qsub 提交多个作业,但我将如何使其从未压缩的输入文件夹中获取输入文件?

例如,我可以编写一个 script.sh 在 for 循环中一个一个地选择文件名并将其提交给 qsub 命令吗?还有其他有效的解决方案吗?

比如说,如果有 3 台机器,每台机器有 16 个 CPU,如果我向队列提交 48 个作业,qsub 是否会在集群的不同 CPU 中自动启动它们,或者我是否必须使用并行环境参数,如 -np orte 命令设置数量每个集群中的 CPU 数量。是否有必要让我的 python 脚本 MPI 可执行?

总而言之,我有几十万个文件作为输入,我想将它们提交给多核机器的作业队列。如果我动态添加更多机器,作业应该会自动分配。

另一个主要挑战是我需要在最后汇总 500,000 次操作的所有输出吗?是否有关于如何在输出被写出时聚合并行作业的输出的建议?

我正在测试运行几个场景,但我想知道是否有人尝试过类似的场景。

使用 Hadoop 插件有什么建议吗?http://star.mit.edu/cluster/docs/0.93.3/plugins/hadoop.html

在此先感谢卡西克

0 投票
0 回答
313 浏览

python - 并行 Python (pp) 和子进程:任务永远不会在客户端结束

我正在尝试使用模块“Parallel Python”(pp)来分发“大”工具(gdal2tiles,如果你听说过的话)的计算。我正在运行一些简单的测试来熟悉 pp,但我遇到了一个我无法解释的问题。

这是代码:

subprocess.Popen 中的“dir”只是在这里传递一个有效的 shell 命令。

在我的 ppserver 上,我运行“ppserver.py -a -d”。在客户端的控制台上,任务似乎永远不会结束,而它确实在服务器上结束。

在进一步进行测试之前,我想了解这里发生了什么,因为我的最终程序要复杂得多。

谢谢!

0 投票
1 回答
5410 浏览

python - 使用并行 python 进行日志记录

我正在使用并行 pythonexecutePipeline多次执行一个大函数 ()。此功能也使用多处理(与multiprocessing模块)。
我在使用并行 python 模块在控制台上正确显示日志消息时遇到了一些麻烦。当我不使用它时,日志消息会很好地显示。

下面是它的工作原理。我有一个服务器,它每次收到来自客户端的请求时都会调用一个工作人员:

每次有来自客户端的新请求时,都会从新线程执行此函数。然后工作人员正在调用executePipeline使用多处理执行不同进程的函数。

SocketServer.TCPServer我使用线程的服务器。我使用根记录器在我的服务器中设置了一个记录器,如下所示:

当我运行我的服务器时,我只能executePipeline从子进程而不是子进程获取日志记录。此外,我仅在作业结束时才获得执行管道的日志记录,而不是在运行时。

这里也是工人代码。在我的"Executing pipeline with worker number "终端中很好地显示

有没有一种好方法也可以让日志记录正常工作并查看我的executePipeline函数的子进程发回了什么?

谢谢你的帮助!

罗曼佐

0 投票
2 回答
727 浏览

shell - 使用 Django python 脚本加速 postgresql 从文本文件中添加数据

我正在使用配置如下的服务器:

RAM - 56GB 处理器 - 2.6 GHz x 16 核 如何使用 shell 进行并行处理?如何利用处理器的所有内核?

我必须从包含数百万个条目的文本文件中加载数据,例如一个文件包含 50 万行数据。我正在使用 django python 脚本在 postgresql 数据库中加载数据。但是即使我有这么好的配置,在数据库中添加数据也需要很多时间。服务器,但我不知道如何并行利用服务器资源,以减少处理数据的时间。昨天我只从文本文件加载了 15000 行数据到 postgresql,花了将近 12 个小时才完成。我的 django python 脚本如下:

0 投票
0 回答
236 浏览

python - 使用其他服务器的并行 Python 模块

我正在使用并行 python 在多台计算机上进行一些数字运算。一切都很好,直到我认为加入一些课程会很好。

以下是提交作业的代码:

它在单台计算机上运行良好(也使用所有内核,非常好),但如果我尝试使用另一台服务器,计算永远不会停止。

问题是服务器没有cpu负载,因为from SimulationOO import *服务器上不存在文件,所以无法加载。

一种解决方法是将方法.fcalc_rs_rp()从类中取出并使其成为函数,但实际上我希望将函数放在类中,也许您有一个好主意?

如果我尝试不使用该from SimulationOO import *部分,而是将所有需要的函数定义为 depfuncs,它会给出错误AttributeError: 'module' object has no attribute 'Layer'where Layeris one of the classes 我正在使用。

你有什么建议,我怎么能让这个工作?

谢谢