我已经使用
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 跟踪远程发生的长进程?