我有一个Arduino,它将一个JSON数据包发送到Python进程(PP1)。这个Python进程将持续运行。但是这个过程必须邀请和接收JSON数据包到另一个Python进程(PP2)。基本上PP1必须将从Arduino接收的JSON数据包传递给PP2。并且PP1必须从PP2接收命令包(也可以是JSON格式)。
链接到架构图像:
开始研究Python进程1的代码
import json
#open port
serialport = serial.Serial('COM5',38400,timeout=1,stopbits=serial.STOPBITS_TWO);
time.sleep(1);
#loop
while(True):
#receive arduino data
receive = serialport.readline()
#vparse json
try:
test = json.loads(receive)
except:
print Exception.message
else:
print json.dumps(test)
你知道一个简单的方法吗?多线程是否必要?
答案 0 :(得分:0)
您需要“某处”来存储您的数据。最简单的解决方案是使用multiprocessing.Queue
,如果你需要扩展,你可以查看一些工作队列(huey,celery,django_q)。
使用multiprocessing.Queue
的示例:
import multiprocessing
def pp1(q, data):
processed_data = data_processing(data) # do some data processing and its result
q.put(processed_data)
def pp2(q):
result = q.get()
show_results(result) # show results to the user
if __name__ == '__main__':
queue = multiprocessing.Queue()
process_1 = multiprocessing.Process(target=pp1, args=(queue,))
process_1.start()
process_2 = multiprocessing.Process(target=pp2, args=(queue,))
process_2.start()
你的循环将是data_processing
和show_results
(虚拟)函数。
您可以在此处详细了解流程沟通:https://pymotw.com/3/multiprocessing/communication.html
希望有所帮助