python multiprocessing 多线程一整段代码

python multiprocessing multithread a whole code

我没有在 python 代码中使用 multiprocessing/multithread。

我的代码很长(超过 600 行),我需要 运行 使用多个 CPU 来处理它。

于是我看到了mutiprocessing/thread的使用方法,但是整段代码找不到方法

代码的形式为..

  1. for循环
  2. 读取 csv
  3. 做几个预处理
  4. 值的平均值
  5. 与其他值比较 ...

如果我必须编辑多处理的所有代码,那将需要很多次,如果你知道如何对整个代码进行多处理,请告诉我好吗?

要在多个 CPU 内核上并行化一个函数,通常必须避免改变全局状态,并且每个函数调用都必须独立于其他函数调用。考虑这个尊重条件的假设函数(删除与其他值的比较):

def f(file: Path) -> Value:
  data = read_csv(file)
  processed = pre_processing(data)
  return mean(processed)

您可以使用 concurrent 集成包轻松地将其与 Python 进行多线程处理:

from concurrent.futures import ThreadPoolExecutor

files = ["/path/1/", ...]  # List of files

with ThreadPoolExecutor() as executor:
  values = executor.map(f, files)

# Compare values here
for value in values:
  ...

您还可以使用 ProcessPoolExecutor 进行多处理。