【发布时间】:2019-04-05 11:47:10
【问题描述】:
我正在尝试使用 ThreadPool 并行化代码。我目前正在研究窗户。基本上,我得到的行为是当我调用 apply_async 时没有任何反应。我的程序只打印 START 和 END。
下面有一个例子:
import glob
import itertools
import pandas as pd
from multiprocessing.dummy import Pool as ThreadPool
def ppp(window,day):
print(window,day)
#%% Reading datasets
print('START')
tree = pd.read_csv('datan\\days.csv')
days = list(tree.columns)
windows = [2000]
processes_args = list(itertools.product(windows, days))
pool = ThreadPool(8)
results = pool.apply_async(ppp, processes_args)
pool.close()
pool.join()
print('END')
堆栈上有很多问题建议调用其他方法,例如 imap_unordered、map、apply。但是,它们都没有解决问题。
编辑:
results.get()
返回关于参数数量的错误:
TypeError: ppp() takes 2 positional arguments but 10 were given
但是,文档说明我可以使用元组列表来传递参数,否则我该如何传递它们?
编辑2:
processes_args 在调用 apply_async 之前看起来像下面的输出:
[(2000, '0808'),
(2000, '0810'),
(2000, '0812'),
(2000, '0813'),
(2000, '0814'),
(2000, '0817'),
(2000, '0818'),
(2000, '0827'),
(2000, '0828'),
(2000, '0829')]
【问题讨论】:
-
您想检查
AsyncResult结果以获取任何可见的错误。只需致电results.get()。 -
我编辑了这个问题,谢谢。 @noxdafox
标签: python multithreading multiprocessing threadpool