multiprocessing相关内容

为什么导入 numpy 后多处理只使用一个核心?

我不确定这是否更像是一个操作系统问题,但我想我会在这里问一下,以防有人对 Python 端有一些见解. 我一直在尝试使用 joblib 并行化 CPU 密集型 for 循环,但我发现不是将每个工作进程分配给不同的内核,而是最终所有这些都被分配到同一个核心,并且没有性能提升. 这是一个非常简单的例子... from joblib import Parallel,延迟将 numpy 导入 ..
发布时间:2021-12-03 12:55:00 Python

Django 多处理和数据库连接

背景: 我正在处理一个使用 Django 和 Postgres 数据库的项目.我们也在使用 mod_wsgi 以防万一,因为我的一些网络搜索已经提到了它.在 Web 表单提交时,Django 视图启动一项需要大量时间(比用户希望等待的时间更长)的作业,因此我们通过后台的系统调用启动作业.现在正在运行的作业需要能够读取和写入数据库.由于这项工作需要很长时间,我们使用多处理并行运行其中的一部分. ..
发布时间:2021-12-02 19:32:58 其他开发

Python 3 中的 Concurrent.futures 与多处理

Python 3.2 引入了 Concurrent Futures,看起来有些高级旧线程和 multiprocessing 模块的组合. 与旧的多处理模块相比,将其用于 CPU 密集型任务的优点和缺点是什么? 这篇文章 表明它们更容易使用 - 是这样吗? 解决方案 我不会将 concurrent.futures 称为更“高级"的- 这是一个更简单的界面,无论您使用多线程还是多进 ..
发布时间:2021-12-02 17:28:49 Python

如何与子进程共享父进程的 numpy 随机状态?

我在程序开始时设置了 numpy 随机种子.在程序执行期间,我使用 multiprocessing.Process 多次运行一个函数.该函数使用 numpy 随机函数来绘制随机数.问题在于 Process 获取当前环境的副本.因此,每个进程都是独立运行的,它们都以与父环境相同的随机种子开始. 所以我的问题是如何与子进程环境共享父环境中numpy的随机状态?请注意,我想将 Process 用于 ..
发布时间:2021-12-02 17:22:15 Python

没有多处理打印输出 (Spyder)

我最近开始深入研究多处理,因为我相信我的代码可以很容易地并行化.但是,在学习教程时,我遇到了一个问题:分布在池中的函数似乎无法打印. 罪魁祸首: __spec__ = None # 这一行是 Spyder 所必需的,而不是实际示例的一部分从多处理导入过程导入操作系统定义信息(标题):打印(标题)打印('模块名称:',__name__)print('父进程:', os.getppid())打 ..
发布时间:2021-12-02 17:09:22 其他开发

多处理:理解“chunksize"背后的逻辑

哪些因素决定了 multiprocessing.Pool.map() 等方法的最佳 chunksize 参数?.map() 方法似乎对其默认块大小使用了任意启发式方法(解释如下);是什么促使做出这种选择?是否有基于某些特定情况/设置的更周到的方法? 例如 - 说我是: 将 iterable 传递给 .map(),其中包含约 1500 万个元素; 在一台 24 核的机器上工作并使用默认 ..
发布时间:2021-12-02 16:47:55 Python

Jupyter 笔记本永远不会使用多处理(Python 3)完成处理

Jupyter 笔记本 我基本上在使用多处理模块,我仍在学习多处理的功能.我正在使用 Dusty Phillips 的这本书,这段代码属于它. 导入多处理随机导入从 multiprocessing.pool 导入池def prime_factor(value):因素 = []对于范围(2,值-1)中的除数:商,余数 = divmod(值,除数)如果不是余数:factor.extend(pr ..
发布时间:2021-12-02 16:44:16 其他开发

如何使用具有多个参数的多处理 pool.map

在 Python multiprocessing 库中,是否有支持多个参数的 pool.map 变体? text = "test";def收割机(文本,案例):X = 案例[0]文本+ str(X)如果 __name__ == '__main__':pool = multiprocessing.Pool(processes=6)案例 = RAW_DATASETpool.map(收割机(文本,案例 ..
发布时间:2021-11-30 23:42:08 Python

多处理与线程 Python

我试图了解 multiprocessing 相对于 线程.我知道多处理绕过了全局解释器锁,但还有什么其他优势,线程不能做同样的事情吗? 解决方案 threading 模块使用线程,multiprocessing 模块使用进程.不同的是线程运行在同一个内存空间,而进程有单独的内存.这使得在多处理进程之间共享对象变得有点困难.由于线程使用相同的内存,因此必须采取预防措施,否则两个线程将同时写入 ..
发布时间:2021-11-30 23:25:54 Python

Python:如何在多处理池中使用值和数组

对于带有 Process 的 multiprocessing,我可以通过设置 args 参数来使用 Value, Array. 使用 multiprocessing 和 Pool,我如何使用 Value,Array. 文档中没有关于如何执行此操作的内容. from multiprocessing import Process, Value, Array定义 f(n, a):n.value ..
发布时间:2021-11-18 05:09:13 其他开发

ARM:启动/唤醒/唤醒其他 CPU 内核/AP 并传递执行起始地址?

在过去的 3-4 天里,我一直在思考这个问题,但找不到合适的解释性文档(来自 ARM 或非官方)来帮助我.我有一个 ODROID-XU 板(big.LITTLE 2 x Cortex-A15 + 2 x Cortex-A7) 板,我正在尝试更多地了解 ARM 架构.在我的“实验"代码中,我现在已经到了要从它们的 WFI(等待中断)状态唤醒其他内核的阶段. 我仍在努力寻找的缺失信息是: ..
发布时间:2021-11-17 21:42:35 其他开发

ProcessPoolExecutor 不执行

我尝试以比实际更快的速度获得 ARIMA 配置. 所以我使用 Iterate 方法来比较所有 ARIMA 组合以更好地选择.为此,我创建了一个迭代函数: 定义差异(数据集,间隔=1):差异=列表()对于范围内的 i(间隔,len(数据集)):值 = 数据集[i] - 数据集[i - 区间]diff.append(value)返回 np.array(diff)# 反转差值def invers ..
发布时间:2021-11-17 21:19:12 其他开发

Python 传递字典以在多处理中处理

我有一个包含(大量)不同属性的类,包括一些字典.当我将类的实例传递给新进程时,所有数值似乎都被正确传递,但类对象中的所有字典都被清空. 这是我编写的一个简单测试来演示我的问题: from multiprocessing import Process班级状态:一 = 0b = {}def f(s, i):打印 "f:", s.a, s.b定义主():状态 = 状态()状态.a = 11sta ..
发布时间:2021-11-17 05:42:52 其他开发

带参数的 Python 子类化过程

我正在尝试创建一个对象,但作为一个新进程.我正在关注 本指南 并想出了这段代码.> 将多处理导入为 mp导入时间类 My_class(mp.Process):定义运行(自我):打印 self.name, "created"时间.睡眠(10)打印 self.name,“退出"self.x()def x(self):打印 self.name, "X"如果 __name__ == '__main__' ..
发布时间:2021-11-17 05:42:06 其他开发

python多处理中的字符串参数

我正在尝试将字符串参数传递给进程中的目标函数.不知何故,字符串被解释为一个包含与字符一样多的参数的列表. 这是代码: 导入多处理定义写入:印刷写('你好')p = multiprocessing.Process(target=write, args=('hello'))p.start() 我得到这个输出: 你好流程流程-1:回溯(最近一次调用最后一次):>>>文件“/usr/local ..
发布时间:2021-11-17 05:34:00 其他开发

Python 多处理关键字参数

这是在函数调用中使用关键字参数的简单示例.没什么特别的. def foo(arg1,arg2, **args):打印 arg1, arg2打印(参数)打印参数['x']args ={'x':2, 'y':3}foo(1,2,**args) 按预期打印: 1 2{'y':3,'x':2}2 我试图将相同样式的关键字参数传递给多处理任务,但是在 args 列表中使用 **, 是一个语法错误.我 ..
发布时间:2021-11-17 05:26:05 其他开发

Python 2.7:如何补偿缺少的 pool.starmap?

我已经定义了这个函数 def writeonfiles(a,seed):随机种子(种子)f = open(a, "w+")对于范围(0,10)中的我:j = random.randint(0,10)#打印jf.写(j)f.close() 其中 a 是包含文件路径的字符串,seed 是整数种子.我想以这样的方式并行化一个简单的程序,即每个核心采用我提供的可用路径之一,为其随机生成器设置种子并在该 ..
发布时间:2021-11-17 05:15:41 其他开发

多处理(使用 concurrent.futures)附加列表

我正在尝试将值附加到列表中.但是,由于它是多处理的,列表最终只有一个值.有没有一种方法可以将所有图像的大小附加到列表中,而不仅仅是一个? 导入 cv2导入并发.futures导入操作系统长度 = []def multi_proc(图像):名称 = 图像 [0:-4]im = cv2.imread(图像)final_im = cv2.resize(im, (100,100))cv2.imwrite ..
发布时间:2021-11-16 19:49:33 其他开发

使用多处理附加到同一个列表 - python

我希望将不同的进程附加到同一个列表中: 将多处理导入为 mpdef foo(n,L):一种L.append(n)池 = mp.Pool(进程数 = 2)经理 = mp.Manager()L= manager.list()l=[[1,2],[3,4],[5,6],[7,8]][pool.apply_async(foo, args=[n,L]) for n in l] 然而, >>打印 L[] ..
发布时间:2021-11-16 19:38:43 其他开发