我有一个 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)
你知道一个简单的方法来做到这一点吗?多线程有必要吗?
您需要“某个地方”来放置您的数据。最简单的解决方案是使用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
and show_results
(虚拟)函数。
您可以在此处阅读有关进程通信的更多信息:https://pymotw.com/3/multiprocessing/communication.html
希望能帮助到你
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)