Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Dask到hdf5的写入失败,“;h5py不能腌制;_Python_Parallel Processing_Dask_Hdf5_H5py - Fatal编程技术网

Python Dask到hdf5的写入失败,“;h5py不能腌制;

Python Dask到hdf5的写入失败,“;h5py不能腌制;,python,parallel-processing,dask,hdf5,h5py,Python,Parallel Processing,Dask,Hdf5,H5py,以下是产生错误的部分: procDask = da.stack(procArrays) print(procDask) print(procDask.compute()) #da.to_hdf5('out.hdf5',{'/arr',procDask}) f = h5py.File('out.hdf5',mode='w') d = f.require_dataset('/a', shape=procDask.shape, dtype=procDask.dtype) d

以下是产生错误的部分:

procDask = da.stack(procArrays)
print(procDask)
print(procDask.compute())    
    
#da.to_hdf5('out.hdf5',{'/arr',procDask})
    
f = h5py.File('out.hdf5',mode='w')
d = f.require_dataset('/a', shape=procDask.shape, dtype=procDask.dtype)
da.store(procDask, d)
我的程序显示是一个

dask.array<stack, shape=(3, 3, 3), dtype=int16, chunksize=(1, 3, 3), chunktype=numpy.ndarray>
它有点冗长,显示源代码等,但我想这是主要错误。 我使用的方法错了吗

编辑: 下面是一个可以重现错误的代码


def main():
procArray=da.one((3,3,3))
procArray.to_hdf5('testout.hdf5','/arr'))
client.shutdown()
如果名称=“\uuuuu main\uuuuuuuu”:
client=client()
main()

正确,H5Py对象不能被pickle,因此不能在分布式设置中使用。我建议使用
to_hdf5
方法来避开此问题。它处理使事情顺利进行所需的技巧。

没有人会对数据堆栈进行酸洗。。。。没人知道是谁或是什么告诉你你能做到这一点?@hpaulj这是我试图遵循的文件,它显示了两种方法,但我认为我用错了,我不确定充分的追溯在哪里可能有用。很难说是
dask
还是
h5py
在抱怨。关于
procDask
,特别是它的数据类型,可能有些太“复杂”了。在
da.store
示例中,
x
是一个数值numpy数组。@hpaulj在对store函数使用numpy数组时,我得到错误“ValueError:所有源必须是dask数组对象”,谢谢您的回答!我添加了一个在我的机器上复制错误的代码,但是使用了to_hdf5方法。你能看一下吗?它发生在我初始化一个客户端时,但这样做不是和串行代码一样吗?Hrm,很有趣。我去提出一个问题,发现:
TypeError: h5py objects cannot be pickled