Python多进程共享numpy 数组的方法
作者:Hello_BeautifulWorld 发布时间:2023-12-02 07:47:17
标签:Python,多进程,numpy,数组
为什么要用numpy
Python中提供了list容器,可以当作数组使用。但列表中的元素可以是任何对象,因此列表中保存的是对象的指针,这样一来,为了保存一个简单的列表[1,2,3]。就需要三个指针和三个整数对象。对于数值运算来说,这种结构显然不够高效。
Python虽然也提供了array模块,但其只支持一维数组,不支持多维数组(在TensorFlow里面偏向于矩阵理解),也没有各种运算函数。因而不适合数值运算。
NumPy的出现弥补了这些不足。
引用:https://zhuanlan.zhihu.com/p/32513483
共享 numpy 数组
需要用到 numpy 时往往是数据量较大的场景,如果直接复制会造成大量内存浪费。共享 numpy 数组则是通过上面一节的 Array 实现,再用 numpy.frombuffer 以及 reshape 对共享的内存封装成 numpy 数组,代码如下:
# encoding:utf8
import ctypes
import os
import multiprocessing
import numpy as np
NUM_PROCESS = multiprocessing.cpu_count()
def worker(index):
main_nparray = np.frombuffer(shared_array_base, dtype=ctypes.c_double)
main_nparray = main_nparray.reshape(NUM_PROCESS, 10)
pid = os.getpid()
main_nparray[index, :] = pid
return pid
if __name__ == "__main__":
shared_array_base = multiprocessing.Array(
ctypes.c_double, NUM_PROCESS * 10, lock=False)
pool = multiprocessing.Pool(processes=NUM_PROCESS)
result = pool.map(worker, range(NUM_PROCESS))
main_nparray = np.frombuffer(shared_array_base, dtype=ctypes.c_double)
main_nparray = main_nparray.reshape(NUM_PROCESS, 10)
print( main_nparray )
运行结果:
来源:https://www.cnblogs.com/devilmaycry812839668/p/15074778.html
0
投稿
猜你喜欢
- 本文实例介绍了php打包网站并在线压缩为zip的方法,分享给大家供大家参考,具体内容如下<?php//在URL后参加 ?pwd=密码
- 此命令作用,修改数据表ff_vod,在vod_url字段内容后加入999999999。update ff_vod set vod_url=C
- 关于DHT协议DHT协议作为BT协议的一个辅助,是非常好玩的。它主要是为了在BT正式下载时得到种子或者BT资源。传统的网络,需要一台中央服务
- 我们可以通过更改注册表来解决这个问题: 打开注册表,进入到[HKEY_USERS\.DEFAULT\Control Panel\Intern
- 1、授权机制的主要作用是什么?授权机制的基本作用是给某个主机上的用户对某个数据库以select,insert,update和detete的权
- Atlassian是一家软件开发商, 2002年创建于澳大利亚悉尼,在旧金山、阿姆斯特丹也有办公室,2011年收入为1亿美元,较2010年增
- SQL Server PRIMARY KEY(主键)约束简介主键是唯一标识表中每一行的一列或一组列。您可以使用主键约束为表创建主键。如果主键
- Python有许多吸引力,如效率,代码可读性和速度,使其成为数据科学爱好者的首选编程语言。Python通常是希望升级其应用程序功能的数据科学
- 具体内容如下所示:参考案例:import turtled=0for i in range(4): turtle.fd(200)
- 1、dayin() 作用:将id为dayin的内容,新建页面并打印,可解决打印某页面中的部分内容的问题。 使用方法:将要打印的内容通过&nb
- 为了熟悉Python基础语法,学习了一个经典的案例:飞机大战,最后实现效果如下:实现步骤:①下载64位对应python版本的pygame:p
- 一,原图和效果图二,代码//#########################产生随机颜色#########################
- 导语每年的节假日一到,大家头疼的总时同一个问题:你买到回家的票了吗?尤其是大型的节日:”比如国庆、春节......&am
- defer用于资源的释放,会在函数返回之前进行调用。如果有多个defer表达式,调用顺序类似于栈,越后面的defer表达式越先被调用。def
- 代码如下:--执行顺序 From Where Select select * from (select sal as salary,comm
- 一、分析链接上一篇文章指路一般来说,我们参加某个网站的盖楼抽奖活动,并不是仅仅只参加一个,而是多个盖楼活动一起参加。这个时候,我们就需要分析
- 对json数据进行查询及修改使用 字段->'$.json属性' 进行查询条件使用 json_extract 函数查询,
- 使用if…elif…elif…else 实现switch/case可以使用if…elif…elif..else序列来代替switch/cas
- jQuery居然都没有JSON的decode和encode,精确类型判断也没有,囧……自己动手写吧!不过这些东西在网上都已经有很好的版本了,
- 今天下载了一个msde2000A,本想按照平时的安装习惯,找到了setup.exe安装程序,错误提示弹出一个对话框:“为了安全起见,要求使用