【发布时间】:2018-11-23 04:55:43
【问题描述】:
这是我的代码:
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
所以问题是 - 我怎样才能让它在另一个函数中工作?
【问题讨论】:
标签: python multiprocessing python-multiprocessing process-pool