zoukankan      html  css  js  c++  java
  • python 多线程通信之Queue

    #进程之间的通信
    # 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()
    写出漂亮的博客就是为了以后看着更方便的。
  • 相关阅读:
    node=day5
    封装异步API
    form表单的name作用
    关于app.use('/static', express.static(path.join(__dirname, 'public')))的理解
    node=day4
    PS切片
    WPF SDK研究 之 数据绑定
    C# WPF DataGrid控件实现三级联动
    wpf中的样式与模板
    WPF : ListBox的几种Template属性
  • 原文地址:https://www.cnblogs.com/zhaowei5/p/9328369.html
Copyright © 2011-2022 走看看