我正在尝试将 pathos 多处理用于一个简单的函数,我为其传递一个数组,它拆分为并行进程,然后在最后加入。
这是我使用多处理功能移植过来的代码,然后我没有导入多处理,而是导入了 pathos。
import sys
import gender_guesser.detector as gender
import time
from pathos import multiprocessing as multiprocessing
d = gender.Detector()
def guess_gender (name):
n = name.title() # make first letter upper case and the rest lower case
g = d.get_gender(n) # guess gender
return g
ls = ['john','joe','amamda','derick','peter','ashley','john','joe','amamda','derick','peter','ashley']
t=time.time()
results=[]
def callBack(x):
results.append(x)
pool = multiprocessing.Pool(processes=multiprocessing.cpu_count()-1, maxtasksperchild=1)
for n in ls:
print (n)
pool.apply_async(guess_gender,args=[n],callback=callBack)
pool.close()
pool.join()
results = pd.concat(results)
print(time.time()-t)
但是,我收到此错误:
ValueError: No objects to concatenate
我不确定如何提取输出结果。pathos 的文档很薄。
有没有人有任何想法或经验?
仅供参考,我在 jupyter 笔记本中运行 python。