python利用joblib進(jìn)行并行數(shù)據(jù)處理的代碼示例
在數(shù)據(jù)量比較大的情況下,數(shù)據(jù)預(yù)處理有時(shí)候會(huì)非常耗費(fèi)時(shí)間。
可以利用 joblib 中的 Parallel 和 delayed 進(jìn)行多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個(gè)CPU(默認(rèn)是分配給不同的CPU)
all_wavs = glob('wavs/LJSpeech/*/*/*.wav')
print(f'obtain {len(all_wavs)} wavs...')到此這篇關(guān)于python利用joblib進(jìn)行并行數(shù)據(jù)處理的代碼示例的文章就介紹到這了,更多相關(guān)python joblib并行數(shù)據(jù)處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python并行計(jì)算庫(kù)Joblib高效使用指北
- Python使用Joblib模塊實(shí)現(xiàn)加快任務(wù)處理速度
- Python的joblib模型固化函數(shù)解析
- Python并行庫(kù)joblib之delayed函數(shù)與Parallel函數(shù)詳解
- Python中的Joblib庫(kù)使用學(xué)習(xí)總結(jié)
- Python中的joblib模塊詳解
- python如何利用joblib保存訓(xùn)練模型
- Python Joblib庫(kù)使用方法案例總結(jié)
- Python高效計(jì)算庫(kù)Joblib的入門(mén)教程
相關(guān)文章
使用Python在Word文檔中創(chuàng)建圖表的方法
在現(xiàn)代辦公自動(dòng)化場(chǎng)景中,將數(shù)據(jù)可視化為圖表并嵌入 Word 文檔已成為一項(xiàng)常見(jiàn)需求,本文將深入探討如何使用 Python 在 Word 文檔中創(chuàng)建各種類型的圖表,并對(duì)其進(jìn)行樣式定制和數(shù)據(jù)配置,需要的朋友可以參考下2026-03-03
python如何使用requests提交post請(qǐng)求并上傳文件(multipart/form-data)
這篇文章主要給大家介紹了關(guān)于python如何使用requests提交post請(qǐng)求并上傳文件(multipart/form-data)的相關(guān)資料,Python有許多庫(kù)支持,它們可以簡(jiǎn)化HTTP上的數(shù)據(jù)傳輸,requests庫(kù)是最受歡迎的Python包之一,因?yàn)樗诰W(wǎng)絡(luò)刮削中被大量使用,需要的朋友可以參考下2023-11-11
pandas 中對(duì)特征進(jìn)行硬編碼和onehot編碼的實(shí)現(xiàn)
今天小編就為大家分享一篇pandas 中對(duì)特征進(jìn)行硬編碼和onehot編碼的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
python去除字符strip方法的實(shí)現(xiàn)
Python中strip()方法用于去除字符串首尾的空白字符,包括空格、制表符和換行符,可以確保字符串沒(méi)有多余的空白字符,感興趣的可以了解一下2024-11-11
Python 在 VSCode 中使用 IPython Kernel 的方法詳解
這篇文章主要介紹了Python 在 VSCode 中使用 IPython Kernel 的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
使用Python批量將Word轉(zhuǎn)PDF的實(shí)現(xiàn)技巧
我們?cè)趯?shí)際工作中很容易發(fā)現(xiàn),有些時(shí)候我們需要將Word文檔轉(zhuǎn)換為PDF文檔,如果只是一個(gè)文件,我們也只是需要通過(guò)Word提供的轉(zhuǎn)換為PDF文檔的功能就可以實(shí)現(xiàn)了,那么多個(gè)文檔如何實(shí)現(xiàn)呢,所以本文給大家介紹了Python批量將Word轉(zhuǎn)PDF的實(shí)現(xiàn)技巧,需要的朋友可以參考下2025-08-08

