Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在两个Python进程之间交换数据_Python_Json_Process_Python Multithreading - Fatal编程技术网

在两个Python进程之间交换数据

在两个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

我有一个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,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通道