用ipclus从从节点读取stdout

2024-05-12 22:05:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经使用

ipcluster start --n=8

然后使用

^{pr2}$

我在从节点(e[0]-e[7])上运行进程,这需要很多时间,我希望它们向主节点发送进度报告,这样我就可以监视它们的通过距离了。在

有两种方法我可以考虑做到这一点,但到目前为止,我还没有能够实现其中任何一个,尽管在问题页上搜索了几个小时。在

或者我想让节点在没有提示的情况下将一些数据推回到主节点。i、 e.在节点上运行的长进程中,我实现了一个函数,它将进程定期传递给主进程。在

或者我可以将节点的stdout重定向到主节点的stdout,然后使用print跟踪进程。到目前为止我一直在努力。每个节点都有自己的stdout,因此如果远程运行print,则不会执行任何操作。我试过推系统标准输出但这只会关闭它。在

我不敢相信我是唯一一个想这么做的人,所以也许我错过了一些很简单的东西。如何使用ipython跟踪远程发生的长进程?在


Tags: 数据方法距离节点远程进程报告stdout
1条回答
网友
1楼 · 发布于 2024-05-12 22:05:23

stdout已经被捕获、记录和跟踪,并在结果完成之前到达客户端。在

IPython附带了an example脚本,该脚本监视所有引擎的stdout/err,可以很容易地调整为只监视此信息的一个子集,等等

在客户机本身中,可以在结果完成之前检查元数据dict中的stdout/err(Client.metadata[msg_id].stdout)。使用Client.spin()清除zeromq套接字的所有传入消息,以确保此数据是最新的。在

如果您希望stdout经常更新,请确保调用sys.stdout.flush()以确保流在此时实际发布,而不是依赖于隐式刷新,这可能在工作完成之前不会发生。在

相关问题 更多 >