gpt4 book ai didi

python - 使用 ipcluster 从从节点读取标准输出

转载 作者:太空狗 更新时间:2023-10-30 03:06:03 24 4
gpt4 key购买 nike

我已经使用

设置了一个集群
ipcluster start --n=8

然后使用

访问它
from IPython.parallel import Client
c=Client()
dview=c[:]
e=[i for i in c]

我在从属节点 (e[0]-e[7]) 上运行进程,这需要很多时间,我希望他们向主节点发送进度报告,这样我就可以关注如何他们已经走了很远。

我想有两种方法可以做到这一点,但到目前为止,尽管我花了数小时浏览问题页面,但我还没有能够实现其中任何一种。

要么我希望节点在没有提示的情况下将一些数据推送回主节点。即,在节点上运行的长过程中,我实现了一个函数,该函数定期将其进度传递给主节点。

或者我可以将节点的标准输出重定向到主节点的标准输出,然后使用打印跟踪进度。到目前为止,这就是我一直在做的事情。每个节点都有自己的标准输出,因此如果远程运行,打印不会执行任何操作。我试过将 sys.stdout 推送到节点,但这只会关闭它。

我不敢相信我是唯一想这样做的人,所以也许我遗漏了一些非常简单的东西。我如何使用 ipython 跟踪远程发生的长进程?

最佳答案

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

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

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

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

关于python - 使用 ipcluster 从从节点读取标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9823548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com