我已经使用
ipcluster start --n=8
然后使用
^{pr2}$我在从节点(e[0]-e[7])上运行进程,这需要很多时间,我希望它们向主节点发送进度报告,这样我就可以监视它们的通过距离了。在
有两种方法我可以考虑做到这一点,但到目前为止,我还没有能够实现其中任何一个,尽管在问题页上搜索了几个小时。在
或者我想让节点在没有提示的情况下将一些数据推回到主节点。i、 e.在节点上运行的长进程中,我实现了一个函数,它将进程定期传递给主进程。在
或者我可以将节点的stdout重定向到主节点的stdout,然后使用print跟踪进程。到目前为止我一直在努力。每个节点都有自己的stdout,因此如果远程运行print,则不会执行任何操作。我试过推系统标准输出但这只会关闭它。在
我不敢相信我是唯一一个想这么做的人,所以也许我错过了一些很简单的东西。如何使用ipython跟踪远程发生的长进程?在
stdout已经被捕获、记录和跟踪,并在结果完成之前到达客户端。在
IPython附带了an example脚本,该脚本监视所有引擎的stdout/err,可以很容易地调整为只监视此信息的一个子集,等等
在客户机本身中,可以在结果完成之前检查元数据dict中的stdout/err(
Client.metadata[msg_id].stdout
)。使用Client.spin()
清除zeromq套接字的所有传入消息,以确保此数据是最新的。在如果您希望stdout经常更新,请确保调用
sys.stdout.flush()
以确保流在此时实际发布,而不是依赖于隐式刷新,这可能在工作完成之前不会发生。在相关问题 更多 >
编程相关推荐