这是我的代码:
import pandas as pd
import multiprocessing as mp
CPU = 4
inp = pd.DataFrame({ 'col': ['a', 'b'] })
def test(dataframe):
df = dataframe.copy()
def worker(data):
print('worker')
def callback(data):
print('callback')
pool = mp.Pool(CPU)
for idx, row in df.iterrows():
print((idx, row['col']))
pool.apply_async(worker, args=[(idx, row['col'])], callback=callback)
pool.close()
pool.join()
return df
test(inp)
如果我在上层范围内运行(不包含在test
函数中),它会按预期工作,但是在将它包含在另一个函数中之后 - 它们只是没有被调用。
这是我收到的test
功能输出:
(0, 'a')
(1, 'b')
没有:
(0, 'a')
(1, 'b')
worker
worker
callback
callback
所以问题是 -我怎样才能让它在另一个函数中工作?