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并行数据处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Python在Word文档中创建图表的方法

    使用Python在Word文档中创建图表的方法

    在现代办公自动化场景中,将数据可视化为图表并嵌入 Word 文档已成为一项常见需求,本文将深入探讨如何使用 Python 在 Word 文档中创建各种类型的图表,并对其进行样式定制和数据配置,需要的朋友可以参考下
    2026-03-03
  • python argparse模块传参用法实例

    python argparse模块传参用法实例

    这篇文章主要为大家介绍了python argparse模块传参用法实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 如何用python处理excel表格

    如何用python处理excel表格

    在本篇文章里小编给大家整理了关于python处理excel表格的详细步骤内容,需要的朋友们可以参考下。
    2020-06-06
  • python如何使用requests提交post请求并上传文件(multipart/form-data)

    python如何使用requests提交post请求并上传文件(multipart/form-data)

    这篇文章主要给大家介绍了关于python如何使用requests提交post请求并上传文件(multipart/form-data)的相关资料,Python有许多库支持,它们可以简化HTTP上的数据传输,requests库是最受欢迎的Python包之一,因为它在网络刮削中被大量使用,需要的朋友可以参考下
    2023-11-11
  • pandas 中对特征进行硬编码和onehot编码的实现

    pandas 中对特征进行硬编码和onehot编码的实现

    今天小编就为大家分享一篇pandas 中对特征进行硬编码和onehot编码的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • 利用python求积分的实例

    利用python求积分的实例

    今天小编就为大家分享一篇利用python求积分的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • python中路径字符串斜杠替换方式

    python中路径字符串斜杠替换方式

    这篇文章主要介绍了python中路径字符串斜杠替换方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • python去除字符strip方法的实现

    python去除字符strip方法的实现

    Python中strip()方法用于去除字符串首尾的空白字符,包括空格、制表符和换行符,可以确保字符串没有多余的空白字符,感兴趣的可以了解一下
    2024-11-11
  • Python 在 VSCode 中使用 IPython Kernel 的方法详解

    Python 在 VSCode 中使用 IPython Kernel 的方法详解

    这篇文章主要介绍了Python 在 VSCode 中使用 IPython Kernel 的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • 使用Python批量将Word转PDF的实现技巧

    使用Python批量将Word转PDF的实现技巧

    我们在实际工作中很容易发现,有些时候我们需要将Word文档转换为PDF文档,如果只是一个文件,我们也只是需要通过Word提供的转换为PDF文档的功能就可以实现了,那么多个文档如何实现呢,所以本文给大家介绍了Python批量将Word转PDF的实现技巧,需要的朋友可以参考下
    2025-08-08

最新评论