_sample_chains_parallel
你在打电话吗
chain._sample()
不只是传递函数:
pool.apply_async(chain._sample())
. 所以你把结果作为一个论点来传递,而不是让
apply_async
算算吧。
()
对您帮助不大,因为python2不能pickle实例方法(Python+3.5也可以)。除非你打电话,否则不会出错
get()
在result对象上,如果您看到这种方法的时间很短,请不要高兴,这是因为它很快就会退出,并出现一个未确认的异常。
对于并行版本,您必须重新定位
worker
到模块级并调用它
pool.apply_async(worker (chain,))
pool.map(worker, self.chains)
.
注意你忘了
clear_thetas()
对于
_sample_chains_parallel_worker
. 更好的解决办法是让
Chain._sample
self._clear_thetas()
.