python - 使用多处理和 h5py

标签 python h5py numba joblib

尝试并行运行带有 joblib/multiprocessing 的命令时出现错误:

这里是回溯:

Process PoolWorker-263:
Traceback (most recent call last):
File "/home/marcel/anaconda/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
            self.run()
          File "/home/marcel/anaconda/lib/python2.7/multiprocessing/process.py", line 114, in run
            self._target(*self._args, **self._kwargs)
          File "/home/marcel/anaconda/lib/python2.7/multiprocessing/pool.py", line 102, in worker
            task = get()
          File "/home/marcel/.local/lib/python2.7/site-packages/joblib/pool.py", line 363, in get
          File "_objects.pyx", line 240, in h5py._objects.ObjectID.__cinit__ (h5py/_objects.c:2994)
        TypeError: __cinit__() takes exactly 1 positional argument (0 given)

正如您从错误消息中看到的那样,我处理的是使用 h5py 加载的数据。为了使事情进一步复杂化,我想并行化的例程在其子例程之一中使用了 numba,但我希望这无关紧要。

这是一个运行示例,您可以复制并粘贴:

from joblib import Parallel,delayed
import numpy as np
import h5py as h5
import os

def testfunc(h5data, row):
    # some very boneheaded CPU work
    data_slice = h5data[:,row,...]
    ma = np.mean(data_slice, axis = 1)
    x = row
    return ma, x

def run():
    data = np.random.random((100,100,100)) 
    print data
    f_out = h5.File('tmp.h5', 'w')
    dset = f_out.create_dataset('mydata', data = data )
    f_out.close()
    f_in = h5.File('tmp.h5', 'r')
    h5data = f_in['mydata']
    pool = Parallel(n_jobs=-1,verbose=1,pre_dispatch='all')
    results = pool(delayed(testfunc)(h5data, i) for i in range(h5data.shape[1]))
    f_in.close()
    os.remove('tmp.h5')


if __name__ == '__main__':
    run()

任何想法,我做错了什么?

编辑:好吧,至少我可以将 numba 从作恶者名单中排除......

最佳答案

1您可以尝试将 ˋjoblib 替换为 [pathos][1],将 pickle 替换为 dill`。这通常可以解决所有酸洗问题。

关于python - 使用多处理和 h5py,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31919984/

相关文章:

python - 使用多处理时避免重新编译 numba 代码

python - Pandas : histogram with fixed width

arrays - 可见弃用警告...?

python - 带有内连接查询的 web.py 数据库

python - 使用 cx_freeze 4.3.1 卡住 h5py 2.4 时出错

h5py - h5py 是否提供了一种简洁的方法来创建或使用组或数据集?

Debian 8 上的 Python numba/llvmlite - 我无法构建 llvmlite

python - CUDA/Python : conversion error for matrix operation

python - celery 、kombu 和 django - 导入错误

python - 尝试使用图形工具进行 block 分区时出现 AttributeError