我在Python中创建一个节点列表,我希望他们可以在他们之间广播消息。
目前的代码是:
import multiprocessing as mp
NUM_PROC = 10
import time
class Node(object):
def __init__(self, node_id):
self.id = node_id
self.neighbours = []
def talk_to_neighbours(self):
for n in self.neighbours:
print "Hi Node " + str(n.id) + ", this is greeting from Node " + str(self.id)
time.sleep(1)
def wrapper_func(node):
return node.talk_to_neighbours()
if __name__ == '__main__':
node_list = [Node(i) for i in range(10)]
for node in node_list:
node.neighbours = [neighbour_node for neighbour_node in node_list if neighbour_node.id != node.id]
pool = mp.Pool(NUM_PROC)
pool.map(wrapper_func, node_list)
pool.close()
pool.join()
根本没有IPC。
Queues
模块的基本实用程序Pipes
和multiprocessing
看起来不像本机支持广播。
我能想到的是手动连接每对节点,然后使用Queues
和Pipes
。
我想知道是否有更简单的解决方案,因为这个很乏味。