list or array to file

import array
import json
import binascii
from ctypes import create_string_buffer
import struct

import numpy as np

from public_function import print_cost_time

# arr = np.random.randint(1024 ** 2, size=(1280, 1280))
# arr_list = arr.tolist()
# with open("111.json", "w") as f:
#     with print_cost_time():
#         f.write(json.dumps(arr_list))
#
# with print_cost_time():
#     with open("111.json", "r") as f:
#         json.load(f)

m, n = 1, 2
m = n = 2560
max_value = 1024 ** 2
arr = np.random.randint(max_value, size=(m, n), dtype=np.uint64)
print(arr)

data_list = arr.tolist()
# data_list = [[10, 8, 1, 1]]
# print(data_list)
target_file = "mpi_heatmap.{}_{}.dat".format(m, n)

with print_cost_time("写"):
    with open(target_file, "wb") as f:
        fmt = "<" + "Q" * len(data_list)
        for row in data_list:
            f.write(struct.pack(fmt, *row))
            # for item in row:
            #     bin_str = struct.pack('<Q', item)
            #     # print(bin_str)
            #     f.write(bin_str)

# with open(target_file, "rb") as f:
#     bin_str = f.read()
#     print(bin_str)

arr = array.array("Q")
for row in data_list:
    arr.extend(row)
with print_cost_time("用array写"):
    with open(target_file, "wb") as f:
        arr.tofile(f)


with print_cost_time("读"):
    arr = np.fromfile(target_file, dtype=np.uint64)
    arr = arr.reshape((m, -1))
    print(arr)

# buffer = create_string_buffer(7)
# struct.pack_into("!B", buffer, 0, 10)
# struct.pack_into("!H", buffer, 1, 11)
# struct.pack_into("!I", buffer, 3, 12)
# print(binascii.hexlify(buffer))
#
# buffer = create_string_buffer(7)
# struct.pack_into("@B", buffer, 0, 10)
# struct.pack_into("@H", buffer, 1, 11)
# struct.pack_into("@I", buffer, 3, 12)
# print(binascii.hexlify(buffer))
#
# buffer = create_string_buffer(7)
# struct.pack_into("=B", buffer, 0, 10)
# struct.pack_into("=H", buffer, 1, 11)
# struct.pack_into("=I", buffer, 3, 12)
# print(binascii.hexlify(buffer))
#
# buffer = create_string_buffer(7)
# struct.pack_into(">B", buffer, 0, 10)
# struct.pack_into(">H", buffer, 1, 11)
# struct.pack_into(">I", buffer, 3, 12)
# print(binascii.hexlify(buffer))
#
# buffer = create_string_buffer(7)
# struct.pack_into("<B", buffer, 0, 10)
# struct.pack_into("<H", buffer, 1, 11)
# struct.pack_into("<I", buffer, 3, 12)
# print(binascii.hexlify(buffer))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值