我正在尝试对以下代码使用多处理。该代码的运行速度似乎比函数内的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'
多处理器有开销。它必须启动进程并通过进程间机制传递函数数据。在另一个进程中只运行一个函数与正常运行同一个函数相比总是会更慢。其优点实际上是在函数中进行并行,这样可以将开销降至最低。
您可以调用multiprocessing.current_process().name
来查看进程名称的更改。