speechbrain.utils.parallel 模块
并行处理工具,帮助加速某些任务,如数据预处理。
- Authors
Sylvain de Langen 2023
摘要
类:
上下文管理器,在退出时取消列表中所有元素的.cancel()。 |
函数:
使用函数映射可迭代项,使用多个进程并行处理项目块,并使用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处理