python利用joblib進行并行數(shù)據(jù)處理的代碼示例
在數(shù)據(jù)量比較大的情況下,數(shù)據(jù)預處理有時候會非常耗費時間。
可以利用 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進行并行數(shù)據(jù)處理的代碼示例的文章就介紹到這了,更多相關python joblib并行數(shù)據(jù)處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
解決Python中的ModuleNotFoundError:?No?module?named?'pad
你是否在嘗試導入`paddle`模塊時遇到了"ModuleNotFoundError:?No?module?named?'paddle'"這個錯誤?別擔心,我們的指南會告訴你如何解決,這就像找到丟失的鑰匙一樣簡單,讓我們一起來看看如何解決這個問題吧!2024-03-03Python獲取網(wǎng)頁數(shù)據(jù)詳解流程
讀萬卷書不如行萬里路,只學書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Python來獲取網(wǎng)頁的數(shù)據(jù),主要應用了Requests庫,大家可以在過程中查缺補漏,提升水平2021-10-10OneFlow源碼解析之Eager模式下Tensor存儲管理
這篇文章主要為大家介紹了OneFlow源碼解析之Eager模式下Tensor的存儲管理實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04python環(huán)境中的概念conda中與環(huán)境相關指令操作
這篇文章主要介紹了python環(huán)境中的概念conda中與環(huán)境相關指令操作,虛擬環(huán)境是從電腦獨立開辟出來的環(huán)境,文章介紹了相關概念,需要的朋友可以參考下2023-03-03python使用requests+excel進行接口自動化測試的實現(xiàn)
在當今的互聯(lián)網(wǎng)時代中,接口自動化測試越來越成為軟件測試的重要組成部分,本文就來介紹了python使用requests+excel進行接口自動化測試的實現(xiàn),感興趣的可以了解一下2023-11-11