2

我正在尝试将 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。

4

0 回答 0