【发布时间】:2012-03-22 13:46:06
【问题描述】:
我已经使用
设置了一个集群ipcluster start --n=8
然后使用它访问它
from IPython.parallel import Client
c=Client()
dview=c[:]
e=[i for i in c]
我正在从节点 (e[0]-e[7]) 上运行进程,这需要花费大量时间,我希望它们向主节点发送进度报告,以便我可以密切关注如何远远超过他们。
我可以想到两种方法来做到这一点,但到目前为止,我都无法实现其中任何一种,尽管我在问题页面上搜索了数小时。
我希望节点在没有提示的情况下将一些数据推送回主节点。即在节点上运行的长进程中,我实现了一个函数,该函数定期将其进度传递给主节点。
或者我可以将节点的标准输出重定向到主节点的标准输出,然后使用 print 跟踪进度。这是我迄今为止一直在做的事情。每个节点都有自己的标准输出,因此如果远程运行 print 不会做任何事情。我尝试将 sys.stdout 推送到节点,但这只是关闭它。
我不敢相信我是唯一一个想要这样做的人,所以也许我错过了一些非常简单的东西。如何使用 ipython 跟踪远程发生的长进程?
【问题讨论】:
标签: python parallel-processing ipython pyzmq