pool.apply_async,pool.map相当复杂的函数



我有一个函数,可以计算高维KL散度的近似值。在内部,它使用sklearn。最近邻和np.arrays上的计算。它被称为KLnn(P(,其中P.shape=(10000,2(。我想将它应用于许多P输入。[P0,P1,…]。所以我申请在一个输入上测试它:

if __name__ == '__main__':
with Pool() as p:
res = p.apply_async(KLnn, (P,))
print(res.get(timeout = 1))       

我得到了一个超时,这不是由函数的计算引起的,因为函数调用远低于1秒。所以我尝试了:

if __name__ == '__main__':
with Pool() as p:
print(p.map(KLnn, [P]))
p.close()
p.join()

然后开始死锁。在这两种情况下,我都希望它只计算KLnn(P(。

这两个代码块都是从多处理docs.pyson示例中获取的。

我发现操作系统Windows 10和spyder不适合多处理包。这个玩具示例和列表理解中的apply_async在cmd/anaconda提示符下运行良好。然而,作为并行处理领域的新手,IDE/OS并不是第一个出现问题的猜测。

最新更新