jupyter 笔记本之间的自定义消息

Custom message between jupyter notebooks

是否可以使用 Anaconda 的 ZMQ 部分以某种方式在 jupyter notebook 之间进行自定义消息传递?我的意图是,如果有一个有限制的解决方案,我为什么要编写自己的通信解决方案,或者安装新的东西:-) 我想查询所有可用的笔记本,如果需要的笔记本已启动并且 运行 那么我想将自定义的流式数据发送到该笔记本。 (之前我是用 asyncio socket server/client 架构和纯 .py 脚本实现的)。

不幸的是 messaging documentation 对我帮助不大。

提前致谢!

sm.

Q : "Is it possible to use ZMQ part of Anaconda for custom messaging between jupyter notebooks somehow?"

当然可以。

选项 A :
可以扩展 jupyter 框架以在 FOSS 核心中包含所有新功能

选项 B:
可以在 jupyter 内部信令/消息传递功能之上实例化自己的 ZeroMQ 信令/消息传递基础设施并独立于它,并且只工作使用纯用户级代码。

include zmq

my1stContextINSTANCE = zmq.context()                          # The Engine
my1stPublisherSOCKET = my1stContextINSTANCE.socket( zmq.PUB ) #        its Socket
my1stPublisherSOCKET.setsockopt( zmq.LINGER,       0 )        #            configurations
my1stPublisherSOCKET.setsockopt( zmq.SNDBUF, 2000000 )        #            ...
...
my1stPullDataSOCKET  = my1stContextINSTANCE.socket( zmq.PULL )#        its Socket
my1stPullDataSOCKET.setsockopt( zmq.LINGER,        0 )        #            configurations
my1stPullDataSOCKET.setsockopt( zmq.RCVBUF,   100000 )        #            ...

...

while True:
   ...
   my1stPublisherSOCKET.send( "INF: message payload[{0:}]".format( repr( _ ) ) )
   ...
   if ( my1stPullDataSOCKET.poll( 0 ) ) ... ):
       ...

   elseif:
       ...

   else:
       ...

   continue

所有其他对等方都相同。

无论哪种方式,ZeroMQ 框架都非常适合这样做。您可能喜欢阅读 this & this.

架构设计和实施的智慧和稳健性是您的。