如何在Python中的进程间广播消息?

时间:2017-09-18 15:07:45

标签: python python-2.7 multiprocessing

我在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模块的基本实用程序Pipesmultiprocessing看起来不像本机支持广播。 我能想到的是手动连接每对节点,然后使用QueuesPipes。 我想知道是否有更简单的解决方案,因为这个很乏味。

0 个答案:

没有答案