简述电子商务的概念优化设计方案
web/
2025/10/4 9:21:04/
文章来源:
简述电子商务的概念,优化设计方案,凡科网建站怎么样,手表网站代码技术背景 一般情况下我们会选择使用明文形式来存储数据#xff0c;如json、txt、csv等等。如果是需要压缩率较高的存储格式#xff0c;还可以选择使用hdf5或者npz等格式。还有一种比较紧凑的数据存储格式#xff0c;就是直接按照二进制格式存储。这种格式下#xff0c;存储…技术背景 一般情况下我们会选择使用明文形式来存储数据如json、txt、csv等等。如果是需要压缩率较高的存储格式还可以选择使用hdf5或者npz等格式。还有一种比较紧凑的数据存储格式就是直接按照二进制格式存储。这种格式下存储的数据之间没有间隔符在没有压缩的情况下应该是体积最小的存储类型。 使用方法 在Python中我们可以使用numpy.tofile()功能直接将numpy数组类型存储到一个二进制文件中。读取的时候虽然可以直接使用open(file_name, rb)来进行读取但是为了适配大量IO的场景这里我们使用内存映射mmap的形式来进行数据读取。 完整示例 如下是一个完整的示例代码相关的功能直接用注释的形式在代码中标记 import numpy as np
import mmap
import resource
# 获取页数据量大小单位字节
PAGE_SIZE resource.getpagesize()
# 定义单精度浮点数数据占用字节单位字节
DATA_SIZE 4
# 计算页存储数据数量num_float32
PAGE_FNUM int(PAGE_SIZE/DATA_SIZE)
print (The PAGE_SIZE is: {}.format(PAGE_SIZE))
print (Corresponding float32 numbers should be: {}.format(PAGE_FNUM))
# 生成示例数据使用PAGE_FNUM4大小的数据量定义两页数据
tmp_arr np.arange(PAGE_FNUM4).astype(np.float32)
# 数据存储路径
tmp_file /tmp/tmp.dat
# 将数组存储到二进制文件中
tmp_arr.tofile(tmp_file)
# 每次从二进制文件中读取4个数据
READ_NUM 4
with open(tmp_file, rb) as file:# 第一页数据的内存映射mm mmap.mmap(file.fileno(), 0, accessmmap.ACCESS_READ, offset0)# 第一页数据的1、2、3、4位数据print (np.frombuffer(mm.read(DATA_SIZE*READ_NUM), dtypef4))# 第一页数据的5、6、7、8位数据print (np.frombuffer(mm.read(DATA_SIZE*READ_NUM), dtypef4))# 第二页数据的内存映射mm mmap.mmap(file.fileno(), 0, accessmmap.ACCESS_READ, offsetPAGE_SIZE)# 第二页数据的1~4位数据print (np.frombuffer(mm.read(DATA_SIZE*READ_NUM), dtypef4))# 第二页数据的5~8位数据print (np.frombuffer(mm.read(DATA_SIZE*READ_NUM), dtypef4))# 关闭内存映射mm.close()
# 退出文件IO 该脚本的输出结果为 The PAGE_SIZE is: 4096
Corresponding float32 numbers should be: 1024
[0. 1. 2. 3.]
[4. 5. 6. 7.]
[1024. 1025. 1026. 1027.]
[] 结果解析 我们打印的第一个数据是页大小这里显示是4096个字节。而一个单精度浮点数占4个字节所以一页存了1024个单精度浮点数也就是第二个打印输出的结果。由于我们定义的numpy数组是一个从0开始的递增数组因此第一页数据的前8位数字就是从0到7。而第二页的数据是1024~1027一共4个浮点数占16个字节。所以我们在第二页第二次使用numpy.frombuffer()去读取数据的时候得到的是一个空的数组。此外我们可以查看一下这个二进制文件的大小 In [1]: import osIn [2]: os.path.getsize(/tmp/tmp.dat)
Out[2]: 4112 一共是4112个字节刚好是409616个字节。 总结概要 本文介绍了一种在Python中将Numpy数组转存为一个紧凑的二进制格式的文件及其使用内存映射的形式进行读取的方案。一个二进制的数据流不仅可以更加方便页形式的内存映射相比于传统的Numpy单精度浮点数数组还有一个可哈希的特性。总体来说是一个对于高性能计算十分友好的存储格式在cudaSPONGE中作为一个分子动力学模拟轨迹输出的格式使用。 文章转载自Dechin的博客 原文链接https://www.cnblogs.com/dechinphy/p/18404896/dat 体验地址引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86709.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!