0

我正在尝试对以下代码使用多处理。代码似乎比函数内的 for 循环运行得快一点。

如何确认我使用的是库而不是 for 循环?

from multiprocessing import Pool
from multiprocessing import cpu_count
import requests 
import pandas as pd

data= pd.read_csv('~/Downloads/50kNAE000.txt.1' ,sep="\t", header=None)
data = data[0].str.strip("0    ")

lst = []

def request(x):
    for i,v in x.items():
        print(i)
        file = requests.get(v)
        lst.append(file.text)
    #time.sleep(1)

if __name__ == "__main__":
    pool = Pool(cpu_count())
    results = pool.map(request(data))
    pool.close()  # 'TERM'
    pool.join()   # 'KILL'
4

1 回答 1

1

多处理有开销。它必须通过进程间机制启动进程并传递函数数据。仅在另一个进程中运行单个函数与正常运行相同的函数总是会更慢。优点实际上是在函数中进行大量工作,从而使开销最小化。

您可以调用multiprocessing.current_process().name以查看进程名称更改。

于 2021-01-11T02:08:42.227 回答