在两个Python进程之间交换数据
我有一个Arduino,它向Python进程(PP1)发送一个JSON数据包。这个Python进程将持续运行。但是这个进程必须邀请并接收JSON数据包到另一个Python进程(PP2)。基本上,PP1必须将从Arduino接收到的JSON数据包传递给PP2。PP1必须从PP2接收命令包(也可以是JSON格式) 链接到建筑图像: 下面a开始Python进程1的代码在两个Python进程之间交换数据,python,json,process,python-multithreading,Python,Json,Process,Python Multithreading,我有一个Arduino,它向Python进程(PP1)发送一个JSON数据包。这个Python进程将持续运行。但是这个进程必须邀请并接收JSON数据包到另一个Python进程(PP2)。基本上,PP1必须将从Arduino接收到的JSON数据包传递给PP2。PP1必须从PP2接收命令包(也可以是JSON格式) 链接到建筑图像: 下面a开始Python进程1的代码 import json #open port serialport = serial.Serial('COM5',38400,ti
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)
你知道一个简单的方法吗?是否需要多线程处理?您需要“某处”来放置数据。最简单的解决方案是使用多处理.Queue
,如果需要扩展,也许可以查看一些作业队列(huey、芹菜、django_q)
使用多处理.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()
您的循环将是数据处理
和显示结果
(虚拟)函数
您可以在此处阅读有关流程通信的更多信息:
希望它有帮助一个简单的Web服务器可以帮上忙,也许
Flask
?谢谢。PythonProcess2(pp2)是一个django应用程序。上述解决方案是否可以应用于django应用程序?对不起,我是python应用程序的新手。在这种情况下,我会使用django_q或芹菜之类的东西,让django从作业队列(或数据库)读取。如果向最终用户呈现结果的过程必须是实时的,那么您可能需要了解Django通道