问题标签 [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超时产生另一个进程而不是失败?
使用并行 python 1.6.4,我在远程服务器上生成了一个 subprocess.Popen 命令。无论出于何种原因,该命令都没有及时完成,即在我设置的 socket_timeout 内。在这种情况下,我预计并行 python 会失败,终止远程进程,并可能引发异常。相反,长进程继续运行,ppserver 悄悄地生成另一个进程!
如何配置 ppserver 失败?
除此之外,我想我必须设置计时器,并销毁 job_server 以使其关闭并清理不良进程?
python - 并行 Python (pp) 错误 SystemError: 没有设置异常的错误返回
我正在使用 Parallel Python(pp 库)来运行一个相当大的(并且令人尴尬的并行)作业。我的代码:
这在一个小数据集(即 trainX 和 trainY 有 10,000 行)上运行顺利,但是当我在大约 4GB 的完整数据集(400 万行)上运行它时,我得到了这个错误:
我想我遇到了无法处理大文件的泡菜错误。我能做些什么来解决这个问题吗?我已经在图书馆尝试了很多小时,但multiprocessing
从未让它工作——我也很确定我也会遇到这个pickle
问题。升级到 Python3 会解决这个问题吗?
python - 识别处理器核心或工作人员 id 并行 python
我正在并行运行进程,但需要为每个要写入的 cpu 进程创建一个数据库。我只希望在每台服务器上分配的数据库数量与分配的 cpu 一样多,因此将 100 个作业写入 3 个之后可以合并的数据库。
是否有我可以识别每个工人的工人 ID 号或核心 ID?
python - 并行 Python 不会出错,但不会发生并行处理
我是 python 和并行 Python 的新手。问题是我有 4 项工作要做:生成 4 个蒙版,将它们与我的输入图像相乘,然后进行进一步处理。以下是为并行处理编写的一段代码。
我得到的输出是:
我无法理解,如果它不同时处理,我仍然能够获得所需的输出,但是花费的时间太大,这就是我想使用 pp 的原因。请帮助我,以便我可以成功减少时间。提前致谢...
python - Python在线程之间共享类实例
我有一个类,它将所有资源加载到我的应用程序所需的内存中(主要是图像)。
然后有几个线程需要通过这个类来访问这些资源。我不希望每个实例都重新加载所有资源,所以我想我使用单例模式。我是这样做的:
只要我不使用多个线程,这很好。但是对于多个线程,每个线程都有不同的实例。因此,使用 4 个线程,它们每个都创建一个新实例。我希望所有线程都使用这个类的同一个实例,所以资源只加载到内存中一次。
我还尝试在定义类的同一模块中执行此操作,但在类定义之外:
但是每个线程仍然有自己的实例。
我是python新手,如果这是错误的方法请告诉我,我很感激任何帮助
python - 将函数参数区间拆分为单独的部分时出错。并行 Python
首先,对不起所有的代码。我很难提出一个具体的问题。我已经对此进行了一段时间的修改,但无法使其正常工作。错误消息不是很有帮助。我将不胜感激。
我想为不同的参数范围并行执行我的函数 'EMatCreatorrx(umin,umax,vmin,vmax,stepsize,pstep,alphamax,A,rot):' 的三个实例,以加快计算速度。
umin、umax 和 vmin、vmax 都分别定义了要在 u 和 v 方向计算的值的范围。我想通过将 u 范围分成三个较小的范围来划分函数。
我已经证明我的代码将函数拼接成三个单独的部分,然后通过运行以下命令重新加入正常工作:
在此工作之后,我尝试实现并行 python,以便使用以下代码并行计算三个切片:
当我尝试运行上面的代码时,我收到以下文件结束错误:
在这一点上,我有点失落。你们有没有人遇到过这个错误?如果是这样,问题是什么?非常感谢任何输入。谢谢!
python-2.7 - 如何解决并行 python 中的“import multiarray”错误?
我正在尝试运行一个 python 2.7 脚本,该脚本使用并行 python(版本 1.6.1)在 Ubuntu Voyager(Ubuntu 12.04 衍生版本)系统上执行使用 numpy 数组(numpy 版本 1.6.1)的函数。它给了我以下错误消息(实际上,它仍然更长,我猜重复了 12 次):
从其他线程(例如在 Parallel Python 中导入 NumPy)我已经看到这可能是 pp 和 numpy 的通信问题,所以我尝试了这些:
- 更新 pp 和 numpy
- 重新安装 numpy(我正在使用 anaconda 包)
- 直接从 shell 运行代码(而不是从 spyder)
- 将多数组(否则导入就好)直接提交给工作的工人(我确定我有正确的语法......)
但无济于事。你有什么其他的建议?除了 erm 之外还有一个简单的解决方法吗?我的同事使用相同操作系统的更新版本,但使用相同的 python 设置,似乎没有这个问题,但由于时间是一个问题,更新我的系统或劫持他较慢的计算机都不是最好的选择。
如有必要,请随时询问更多详细信息并提前感谢您。
python - 并行 Python:将另一个模块中编写的函数传递给“提交”
我正在使用 Parallel Python 模块 ( pp
),并希望将作业提交给工作人员。但是,我要执行的函数在另一个模块中(用 Cython 编写),我不知道如何将函数名称导入新的 worker。这里建议的方法,即在函数中导入模块“walkerc”无法正常工作,因为walk本身是在walkerc中定义的,文件名是“walkerc.so”
上面的两个语句都失败了,我收到以下错误:
回溯(最近一次通话最后):
文件“”,第 1 行,在 ser.submit(walk, (1000, params), modules = ("walkerc",), globals = globals())
文件“/usr/lib/python2.7/site-packages/pp.py”,第 458 行,在提交 sfunc = self.__dumpsfunc((func, ) + depfuncs, modules)
文件“/usr/lib/python2.7/site-packages/pp.py”,第 629 行,在 __dumpsfunc 来源 = [self.__get_source(func) for func in funcs]
文件“/usr/lib/python2.7/site-packages/pp.py”,第 696 行,在 __get_source sourcelines = inspect.getsourcelines(func)[0]
文件“/usr/lib/python2.7/inspect.py”,第 690 行,在 getsourcelines 行中,lnum = findsource(object)
文件“/usr/lib/python2.7/inspect.py”,第 526 行,在 findsource 文件 = getfile(object)
文件“/usr/lib/python2.7/inspect.py”,第 420 行,在 getfile 'function, traceback, frame, or code object'.format(object))
TypeError: '<'built-in function walk'>' 不是模块、类、方法、函数、回溯、框架或代码对象
函数“walk”本身在主程序中被正确导入,将它提交给新工作人员的过程是有问题的。
如何正确指定函数名称“walk”?我不想在我调用它的同一个文件中定义“walk”,因为我已经在 Cython 中对其进行了修改并希望获得更好的性能。有替代方案吗?
python - python标准库中从多处理到分布式处理
我正在研究有关分布式处理的代码。gitHub
我要感谢eliben
这篇好文章。我已经阅读了他的解释,但有一些黑点。据我了解,该代码用于在多台机器/客户端中分配任务。我的问题是:
我最基本的问题是工作分配到不同机器的位置是什么?
为什么 main 函数中有 if else 语句?
让我以更笼统的方式开始这个问题。我认为我们通常从
Process
一个特定的块(独立内存部分)开始,而不是像这样一次传递所有块:在这个简单的例子中,我们有
nprocs
进程。myWorker
每个进程都会启动一个作用于指定块的函数实例。我的问题是:
- 对于在每个块中工作的每个进程,我们有多少个线程?
现在查看
gitHub
我试图理解的代码mp_factorizer
?更具体地说,在这个函数中,我们没有块,而是一个巨大的队列(shared_job_q
)。这个巨大的队列由最大大小为 43 的子列表组成。这个队列被传递到factorizer_worker
. 通过那里get
我们获取这些子列表并将它们传递给串行工作者。我知道我们需要这个队列来在客户端之间共享数据。我的问题是:
factorizer_worker
我们是否为每个nprocs
(=8) 进程调用函数的实例?- 每个流程的哪一部分数据起作用?(一般情况下,我们有 8 个进程和 43 个块。)
- 每个进程有多少个线程?
- 是否
get
从每个进程线程调用函数?
谢谢你的时间。