问题标签 [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.
python - python的pp模块上的PicklingError
我正在使用python的pp模块。我需要做的是并行运行“scipy.optimize”的“fmin”函数。我正在像这样导入 fmin:
接下来,我定义了一个执行 fmin 函数的函数,如下所示:
为了使其并行运行,我正在使用:
然后我在 job5 的模块中得到一个 PicklingError。我猜那是“scipy.optimize”。我也尝试过import scipy.optimize as sth
,但 job_server.submit 不接受“sth”作为模块。有什么解决办法吗?
谢谢你。
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 中是否有可用的修复程序/解决此问题的方法。
提前致谢
python - 使用并行 python 和类
我很震惊地发现互联网上关于并行 python (PP) 和处理类的教程和指南很少。我遇到了一个问题,我想启动同一个类的几个实例,然后检索一些变量(例如并行读取 5 个数据文件的实例,然后检索它们的数据)。这是一段简单的代码来说明我的问题:
为了您的方便,我添加了评论。我在这里做错了什么?
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 下序列化。知道吗?谢谢你。问候。
我的源代码:
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
搜索一个名为的模块。有想法该怎么解决这个吗?numpy
sys.path
python - 如何动态扩展 StarCluster/qsub/EC2 以跨多个节点运行并行作业
我是使用 Startcluster/qsub/grid engine 来运行并行作业的新手,我尝试阅读其他一些相同的帖子。我仍然不确定如何为我的特定需求构建可扩展的解决方案。在继续之前,我想接受更多建议。
以下是我的要求:
我有一个巨大的 tar 文件 [~40 - 50 GB,它可以达到 100GB] -----> 我在这里无能为力。我接受了一个巨大的单个 tar 文件作为输入。
我必须解压并解压缩它----->我运行 tar xvf tarfilename.tar | 并行 pbzip -d 解压缩和解压缩相同。
这种解压缩的输出是几十万个文件,大约 500,000 个文件。
必须处理此未压缩文件。我有模块化代码,可以接收每个文件并处理它并输出 5 个不同的文件。
Tar File -----Parallel Uncompression---> Uncompressed Files -----Parallel Processing ---> 每个文件处理 5 个输出文件
我目前有一个在 16 核、16GB 内存上运行的并行 python 脚本,它接收这个未压缩文件列表并并行处理相同的文件。
问题是我如何无缝扩展。例如,如果我的代码已经运行了 10 个小时,并且我想再添加一台 8 核机器,我不能在并行 python 中执行它,因为我必须提前知道处理器的数量。
同时,当我在当前集群中动态添加更多节点时,数据的可访问性和读写操作如何?
因此,我开始阅读并使用 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
在此先感谢卡西克
python - 并行 Python (pp) 和子进程:任务永远不会在客户端结束
我正在尝试使用模块“Parallel Python”(pp)来分发“大”工具(gdal2tiles,如果你听说过的话)的计算。我正在运行一些简单的测试来熟悉 pp,但我遇到了一个我无法解释的问题。
这是代码:
subprocess.Popen 中的“dir”只是在这里传递一个有效的 shell 命令。
在我的 ppserver 上,我运行“ppserver.py -a -d”。在客户端的控制台上,任务似乎永远不会结束,而它确实在服务器上结束。
在进一步进行测试之前,我想了解这里发生了什么,因为我的最终程序要复杂得多。
谢谢!
python - 使用并行 python 进行日志记录
我正在使用并行 pythonexecutePipeline
多次执行一个大函数 ()。此功能也使用多处理(与multiprocessing
模块)。
我在使用并行 python 模块在控制台上正确显示日志消息时遇到了一些麻烦。当我不使用它时,日志消息会很好地显示。
下面是它的工作原理。我有一个服务器,它每次收到来自客户端的请求时都会调用一个工作人员:
每次有来自客户端的新请求时,都会从新线程执行此函数。然后工作人员正在调用executePipeline
使用多处理执行不同进程的函数。
SocketServer.TCPServer
我使用线程的服务器。我使用根记录器在我的服务器中设置了一个记录器,如下所示:
当我运行我的服务器时,我只能executePipeline
从子进程而不是子进程获取日志记录。此外,我仅在作业结束时才获得执行管道的日志记录,而不是在运行时。
这里也是工人代码。在我的"Executing pipeline with worker number "
终端中很好地显示
有没有一种好方法也可以让日志记录正常工作并查看我的executePipeline
函数的子进程发回了什么?
谢谢你的帮助!
罗曼佐
shell - 使用 Django python 脚本加速 postgresql 从文本文件中添加数据
我正在使用配置如下的服务器:
RAM - 56GB 处理器 - 2.6 GHz x 16 核 如何使用 shell 进行并行处理?如何利用处理器的所有内核?
我必须从包含数百万个条目的文本文件中加载数据,例如一个文件包含 50 万行数据。我正在使用 django python 脚本在 postgresql 数据库中加载数据。但是即使我有这么好的配置,在数据库中添加数据也需要很多时间。服务器,但我不知道如何并行利用服务器资源,以减少处理数据的时间。昨天我只从文本文件加载了 15000 行数据到 postgresql,花了将近 12 个小时才完成。我的 django python 脚本如下:
python - 使用其他服务器的并行 Python 模块
我正在使用并行 python 在多台计算机上进行一些数字运算。一切都很好,直到我认为加入一些课程会很好。
以下是提交作业的代码:
它在单台计算机上运行良好(也使用所有内核,非常好),但如果我尝试使用另一台服务器,计算永远不会停止。
问题是服务器没有cpu负载,因为from SimulationOO import *
服务器上不存在文件,所以无法加载。
一种解决方法是将方法.fcalc_rs_rp()
从类中取出并使其成为函数,但实际上我希望将函数放在类中,也许您有一个好主意?
如果我尝试不使用该from SimulationOO import *
部分,而是将所有需要的函数定义为 depfuncs,它会给出错误AttributeError: 'module' object has no attribute 'Layer'
where Layer
is one of the classes 我正在使用。
你有什么建议,我怎么能让这个工作?
谢谢