python利用joblib进行并行数据处理的代码示例
更新时间:2023年10月08日 10:19:56 作者:m0_46483236
在数据量比较大的情况下,数据预处理有时候会非常耗费时间,可以利用 joblib 中的 Parallel 和 delayed 进行多CPU并行处理,文中给出了详细的代码示例,需要的朋友可以参考下
在数据量比较大的情况下,数据预处理有时候会非常耗费时间。
可以利用 joblib 中的 Parallel 和 delayed 进行多CPU并行处理
示例如下:
import random import os from glob import glob from tqdm import tqdm from joblib import Parallel, delayed import soundfile as sf import pycantonese as pct from opencc import OpenCC cc = OpenCC('s2hk') ######### ljspeech ########## def process_ljspeech_one_utterance(wav_path, text, mode, save_root): try: tmp = wav_path.split('/') spk = 'LJSpeech-1.1' wname = tmp[-1] tname = wname.replace('.wav','.txt') text_to_path = f'{save_root}/{mode}/{spk}/{tname}' os.makedirs(os.path.dirname(text_to_path), exist_ok=True) fp = open(text_to_path, 'w') fp.write(text) fp.close() wav_to_path = f'{save_root}/{mode}/{spk}/{wname}' _, fs = sf.read(wav_path) if fs != 16000: cmd = f'sox {wav_path} -r 16000 {wav_to_path}' else: cmd = f'cp {wav_path} {wav_to_path}' os.system(cmd) assert False except BaseException: return wavs_root = 'source_data/LJSpeech/LJSpeech-1.1' data = [] with open(f'{wavs_root}/metadata.csv', 'r') as f: lines = f.readlines() for line in lines: uttid = line.strip().split('|')[0] wav_path = f'{wavs_root}/wavs/{uttid}.wav' text = line.strip().split('|')[2] data.append([wav_path, text]) f.close() valid_data = random.sample(data, 100) train_data = [dt for dt in data if dt not in valid_data] Parallel(n_jobs=20)(delayed(process_ljspeech_one_utterance)(wav_path, text, mode='train', save_root='wavs/LJSpeech') for wav_path,text in tqdm(train_data)) Parallel(20)(delayed(process_ljspeech_one_utterance)(wav_path, text, mode='valid', save_root='wavs/LJSpeech') for wav_path,text in tqdm(valid_data)) # Parallel(n_jobs=20): 指定20个CPU(默认是分配给不同的CPU) all_wavs = glob('wavs/LJSpeech/*/*/*.wav') print(f'obtain {len(all_wavs)} wavs...')
到此这篇关于python利用joblib进行并行数据处理的代码示例的文章就介绍到这了,更多相关python joblib并行数据处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
pydantic resolve解决嵌套数据结构生成痛点分析
这篇文章主要为大家介绍了pydantic resolve解决嵌套数据结构生成痛点分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-04-04Python字典取值全攻略之高效、简洁地获取字典值的多种技巧
这篇文章主要给大家介绍了关于Python字典取值全攻略之高效、简洁地获取字典值的多种技巧,dictionary(字典)是除列表以外Python之中最灵活的数据类型,文中通过代码介绍的非常详细,需要的朋友可以参考下2023-12-12解决Pytorch dataloader时报错每个tensor维度不一样的问题
这篇文章主要介绍了解决Pytorch dataloader时报错每个tensor维度不一样的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-05-05
最新评论