跨多处理通信

时间:2017-08-09 12:44:09

标签: python multiprocessing

我有两个过程。 在将来,应该控制一个websocket,另一个线程从funk模块接收消息。

现在我希望有一个回调on_message,我可以通过NRF发送一些东西。

所以我做了一个抽象的实验。但是我找不到另一个进程的回调。

import multiprocessing
from multiprocessing import Queue, Process

def main():
    main_queue = Queue()
    slave_queue = Queue()
    main_process = multiprocessing.Process(target=Main, args=(slave_queue, main_queue))
    slave_process = multiprocessing.Process(target=SlaveThread, args=(main_queue, slave_queue))

    main_process.start()
    slave_process.start()
    main_process.join()
    slave_process.join()


class SlaveThread:
    def __init__(self, main_queue, slave_queue):
        main_queue.put(self.callback)
        while True:
            slave_queue.get()()

    def print_slave_thread(self):
        print("SlaveThread")

    def callback(self):
        print("callback from Slave")


 class Main:
    def __init__(self,  main_queue, slave_queue):
       slave_queue.put(self.callback)
       while True:
            main_queue.get()()

    def print_what_websocket_has_send(self):
       print("MainThread")

    def callback(self):
       print("callback from Main")


if __name__ == '__main__':
    main()
遗憾的是,这种方法不起作用。

1 个答案:

答案 0 :(得分:0)

我不确定您是否可以将函数发送到多进程。但是,可以将信息发送到Queue,然后由子进程读取。您可以发送sAMAccountName,然后将其展开到dict,如果有必要的话。