在Python多处理中.Pool,如何在子流程中获得打印结果



问题是:

def main_fun(x):
...
print(x)
if __name__ == "__main__":
with Pool(5) as pool:
pool.map(main_fun,range(10000))
pool.close()
pool.join()

我的问题是:如果我在自己的计算机上运行代码,它会输出子流程打印结果。但当我将其作为作业提交到集群时,直到整个程序完成,我才能看到打印结果。我该怎么修?顺便说一下,集群使用Slurm。

尝试执行print(x, flush = True)而不是仅执行print(x)

调用的Flush变体会立即刷新缓冲区,以便立即看到打印。而非刷新变体可能会将字符串保留在缓冲区中,直到稍后将其刷新到屏幕。

还要始终在with块内(在末尾(执行pool.close()pool.join(),而不是像您那样在外侧执行。对于只有.map()函数的情况,这并不重要,因为它正在阻塞调用,但对于其他一些情况,关闭/加入with块是很重要的。

相关内容

  • 没有找到相关文章

最新更新