2017-08-09 2 views
0

Ich habe zwei Prozesse. In der Zukunft sollte man einen Websocket steuern, der andere Thread erhält Nachrichten von einem Funkmodul.Inter Multiprocessing-Kommunikation

Jetzt möchte ich einen Rückruf on_message haben, dass ich etwas über NRF senden kann.

Also habe ich ein abstraktes Experiment gemacht. aber ich kann nicht finden, Callbacks von einem anderen Prozess zurückzurufen.

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() 

Leider funktioniert dieser Ansatz nicht.

Antwort

0

Ich bin mir nicht sicher, ob Sie Funktionen an einen Multiprozess senden können. Sie können, senden Sie jedoch Informationen in eine Queue, die dann von Ihrem Subprozess gelesen wird. Sie könnten es senden Sie eine dict und dann erweitern Sie es in **kwargs, wenn das etwas Notwendiges war.

+0

Ich werde das versuchen, danke für Ihre schnelle Antwort – Ipad