speechbrain.utils.parallel 模块

并行处理工具,帮助加速某些任务,如数据预处理。

Authors
  • Sylvain de Langen 2023

摘要

类:

CancelFuturesOnExit

上下文管理器,在退出时取消列表中所有元素的.cancel()。

函数:

parallel_map

使用函数映射可迭代项,使用多个进程并行处理项目块,并使用tqdm显示进度。

参考

class speechbrain.utils.parallel.CancelFuturesOnExit(future_list)[source]

基础类:object

上下文管理器,在退出时取消列表中所有元素的 .cancel() 方法。 这用于在引发异常时更快地中止 futures。

speechbrain.utils.parallel.parallel_map(fn: Callable[[Any], Any], source: Iterable[Any], process_count: int = 2, chunk_size: int = 8, queue_size: int = 128, executor: Executor | None = None, progress_bar: bool = True, progress_bar_kwargs: dict = {'smoothing': 0.02})[source]

使用函数映射可迭代项,使用多个进程并行处理项目块,并使用tqdm显示进度。

处理后的元素将始终以原始、正确的顺序返回。 与ProcessPoolExecutor.map不同,元素的生成和消费都是惰性的。

Parameters:
  • fn (可调用) – 对源列表中的每个元素调用的函数。 输出是在调用 fn(elem) 后对源列表的迭代器。

  • source (Iterable) – 迭代器,其元素通过映射函数传递。

  • process_count (int) – 要生成的进程数。如果提供了自定义执行器,则忽略此参数。 对于CPU密集型任务,通常不需要超过逻辑核心数。 对于IO密集型任务,可能需要限制在iowait中花费的时间。

  • chunk_size (int) – 一次向工作进程提供多少个元素。通常值为8是合适的。较低的值可能会增加开销并减少CPU占用率。

  • queue_size (int) – 主进程一次等待的块数。 较低的值会增加队列被耗尽的机会,迫使 工作进程空闲。 非常高的值可能会导致高内存使用,特别是如果源 可迭代对象产生大对象。

  • executor (可选[Executor]) – 允许提供一个现有的执行器(最好是ProcessPoolExecutor)。如果为None(默认值),将为该映射任务生成一个进程池,并在完成后关闭。

  • progress_bar (bool) – 是否显示tqdm进度条。

  • progress_bar_kwargs (dict) – 一个关键字参数的字典,当 progress_bar == True 时,这些参数会被转发给 tqdm。允许覆盖默认值,或者例如在无法从源可迭代对象推断时指定 total

Yields:

源项目由fn处理