multiprocessing - 读取 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,然后它工作正常。
解决方案
推荐阅读
- javascript - 从 thymeleaf 向 javascript 发送参数
- python - 迭代多个数据帧并执行数学函数保存输出
- python - 熊猫:重复的列,无法删除它们
- c++ - 为 VS2017 构建 OpenCascade
- c++ - C ++ Boost http客户端 - 保持连接活跃
- java - 为什么 rs.Next() 跳过列
- r - dplyr / tidyevaluation:如何将 mutate 中的表达式作为字符串传递?
- c# - HttpWebRequest 中缺少内容长度
- javascript - 单击日期时应触发日期选择器单击事件
- c# - 将图像上传到文件夹 MVC 5