首页 > 解决方案 > 读取 hdf5 文件时的多处理问题

问题描述

f = h5py.File('all.hdf5', 'r')
key = list(f.keys())[-322:]
key_index = [0, 160 ,322]
def calc_factor(f, key, key_index, ix):
    for i in key[key_index[ix] : key_index[ix + 1]]:
        index = np.array([])
        first = True
        try:
            list(f.get(i))
        except Exception as e:
            print(i, e, f.get(i))
            continue

process_list = []
for i in range(2): 
    p = Process(target=calc_factor,args=(f, key, key_index, i,))
    p.start()
    process_list.append(p)

for i in process_list:
    p.join()

打印信息如下:

20200109 'NoneType' 对象不可迭代 <HDF5 数据集“20200109”:形状 (3742, 1),类型“|S10”

我使用多处理从 hdf5 文件中读取数据。它显示当我使用 f.get(i) 时它具有形状,但是当我将其转换为列表时有错误消息“'NoneType' object is not iterable”。

我测试了简单地运行这个函数或将 Process 更改为 1,然后它工作正常。

标签: multiprocessinghdf5

解决方案


推荐阅读