我正在尝试将大量音频文件(〜20000个)转换为声谱图,并且需要并行化转换以加快速度。 不幸的是(使用我的代码),执行是在随机执行之后冻结的,这可能是由于竞争条件造成的?
我已经尝试过将对象变量深复制到锁定的块(multiprocessing.Lock())中,但是没有成功。
这是上述类方法的一部分:
sample, _ = librosa.load(
self.folder_raw_audio / 'files' / (file + '.ogg'),
sr=self.params['sampling_rate'],
mono=self.params['mono']
)
if not self.params['mono'] and len(sample) != 2:
sample = np.array([sample, sample])
for t in self.cache_transformations:
sample = t(sample)
np.save(
self.folder_spectrograms / (file + '.npy'),
sample.astype(np.float32)
)
with ThreadPoolExecutor(max_workers=4) as executor:
future = executor.map(f, [str(s) for s in self.samples[:, 0]])
for _ in tqdm(future, total=len(self.samples)):
pass
也许有人可以发现错误。
感谢您的任何建议:)