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

python 多线程之Queue

时间:2018-07-18 14:03:56      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:连接   main   art   join()   通信   range   相同   child   线程   

#进程之间的通信
# 1.Queue
#跟线程里的queue类似但是不同
from multiprocessing import Process,Queue
import os

def f(q, n):
    q.put([11, n, None])
    print(subpro,id(q))
if __name__==__main__:
    q=Queue()
    print(mainpro,id(q))
    lst=[]
    for i in range(3):
        p=Process(target=f,args=(q,i))  #必须把q传进去,因为不同进程间内存是不共享的
        lst.append(p)
        p.start()
    print(q.get())
    print(q.get())
    print(q.get())
    for i in lst:
        i.join()
# 主进程和其他子进程q(队列)的内存地址是不同的,说明并不是相同的q,python内部进行了一些操作,
# 可能是进程之间在传递队列时,进行了pickle操作。
# 2.Pipes
from multiprocessing import Process,Pipe
def f(conn):
    conn.send([1,aaa])
    conn.close()
if __name__==__main__:
    # 返回父进程连接和子进程连接
    parent_conn,child_conn=Pipe()
    p=Process(target=f,args=(child_conn,))   #参数必须加()别忘了,还有,也不能忘
    p.start()
    print(parent_conn.recv())   #跟socket不同的是recv()不能加数据大小参数,
                                # 传输数据不一定是bytes
    p.join()

 

python 多线程之Queue

标签:连接   main   art   join()   通信   range   相同   child   线程   

原文地址:https://www.cnblogs.com/zhaowei5/p/9328369.html

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