[英]pool.apply_async, pool.map on rather complicated function
我有一个 function 计算更高维度的 KL 散度的近似值。 在内部,它使用 sklearn.NearestNeighbors 和 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))
我得到一个超时,这不是 function 的计算引起的,因为 function 调用远低于 1 秒。 所以我尝试了:
if __name__ == '__main__':
with Pool() as p:
print(p.map(KLnn, [P]))
p.close()
p.join()
然后开始死锁。 在这两种情况下,我都希望它只计算 KLnn(P)。
这两个代码块都是从 multiprocessing docs.python 示例中获取的。
我发现操作系统 Windows 10 和 spyder 不适合多处理 package。 这个玩具示例和列表理解中的 apply_async 在 cmd / anaconda 提示符下运行良好。 然而,作为并行处理领域的新人,IDE / OS 并不是第一个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.