我的multiprocessing.dummy
包和deepdish
有问题要编写压缩的h5文件。
这就是我在做的事情:
import deepdish as dd
from multiprocessing.dummy import Pool
def writeThings(args):
path, np_array = args
dd.io.save(path, {'arr': np_array}, compression='blosc')
p = Pool(4)
p.map(writeThings, all_np_arrays_and_paths)
当我评论deepdish save命令时,一切正常。 似乎dd在Windows上创建了一些损坏的文件,而Python检测到这个错误,只是崩溃了。有谁知道如何解决这一问题?非常感谢你。
答案 0 :(得分:0)
为了澄清,路径彼此不同,所以我写入不同的文件。但是,这个简单功能仍然不起作用。但是,如果我将其嵌入到具有锁定的threading.Thread
类中并使用dd.io.save
包围lock.acquire
命令,并且在写入文件lock.release
之后一切正常。
以下是每个人的代码段:
import threading
class writeThings(threading.Thread):
def __init__(self, args, lock):
super().__init__()
self.args = args
self.lock = lock
def run(self):
while self.args:
path, np_array = self.args.pop()
# Give this thread unique writing rights
self.lock.acquire()
dd.io.save(path, {"arr": np_array}, compression='blosc')
self.lock.release()
lock = threading.Lock()
n_threads = 4
threads = []
for i in range(n_threads):
threads.append(writeThings(args_junk[i],lock))
for i in range(n_threads):
threads[i].start()
for i in range(n_threads):
threads[i].join()