码迷,mamicode.com
首页 > 编程语言 > 详细

python基础学习日志day10-进程间数据通信

时间:2017-06-25 17:43:25      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:reading   使用方法   位置   参数   erro   from   ror   query   his   

一:进程间数据交换方法

  不同进程间内存是不共享的,要想实现两个进程间的数据交换,可以用以下方法:

  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
往线程里面放数据,他没有序列化,往进程里放数据
"""

 

python基础学习日志day10-进程间数据通信

标签:reading   使用方法   位置   参数   erro   from   ror   query   his   

原文地址:http://www.cnblogs.com/lixiang1013/p/7077219.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!