我有两个过程。 将来应该控制一个 websocket,另一个线程从 funk 模块接收消息。
现在我想有一个回调on_message,我可以通过 NRF 发送一些东西。
所以我做了一个抽象的实验。 但是我找不到一个 away 来调用另一个进程的回调。
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()
可悲的是,这种方法行不通。
我不确定您是否可以将函数发送到多进程。但是,您可以将信息发送到队列中,然后由子进程从中读取。您可以发送一个dict
,然后在必要时将其扩展为**kwargs
。