一:进程间数据交换方法
不同进程间内存是不共享的,要想实现两个进程间的数据交换,可以用以下方法:
1)Queue,使用方法跟threading里的queue差不多
# -*- coding:utf-8 -*- __author__ = ‘shisanjun‘ from multiprocessing import Process,Queue import threading import queue # def run(q): # q.put([42,None,"hello"]) # # # if __name__=="__main__": # # q=Queue() # p=Process(target=run,args=(q,)) # p.start() # print(q.get()) """ 正常进程间传递,把query当做参数传给子进程 想当于父进程克隆了一份数据给子进程 其他是两个q父进程q序列化保存在某个位置,子进程q在反序列化 """ def f(): q.put([42,None,"hello"]) # if __name__=="__main__": # # q=queue.Queue() # p=threading.Thread(target=f,) # p.start() # print(q.get()) """ 线程共享内存,所以可以访问q """ # if __name__=="__main__": # # q=queue.Queue() # p=Process(target=f,) # p.start() # print(q.get()) """ name ‘q‘ is not defined 主进程和子进程不能共享内存,所以不能用q """ if __name__=="__main__": q=queue.Queue() #线程队列 p=Process(target=f,args=(q,)) p.start() print(q.get()) """ TypeError: can‘t pickle _thread.lock objects 往线程里面放数据,他没有序列化,往进程里放数据 """
时间: 2024-10-13 20:44:55