• 结合Pool进程池进程,实现进程之间的通讯,稍微复杂的运用


    #进程池中的Queue
    """
    如果要用Pool创建进程,就需要multiprocessing.Manager()中的Queue()
    而不是multiprocessing.Queue()
    """
    from multiprocessing import Manager,Pool
    import os
    
    def write(q):
        print('writer启动')
        for ch in "dongge":
            q.put(ch)
        # print(q.get())
    
    def read(q):
        print('reader启动')
        for i in range(q.qsize()):
            print('reader从Queue获取消息:%s'%q.get())
    
    if __name__ == "__main__":
        print("main Process(%s) start"%os.getpid())
        #新建一个消息队列 里面可以防止无限条消息
        q = Manager().Queue()#使用Manager中的Queue来初始化
        #新建一个进程池 无限数量的进程
        po = Pool()
        po.apply(write,(q,))#先完成这个在往下进行
        print(q.qsize())
        #异步读取 只要里面没有东西就结束 有时输出不出来
        #往往在主进程结束之后再启动
        #如果是同步读取则主进程一定会在读取所有消息之后再结束
        po.apply_async(read,(q,))
    
        po.close()
        print("main Process(%s) end"%os.getpid())
    

      

  • 相关阅读:
    吉他谱----see you again
    web----tcp三次握手
    python shell 执行
    python jieba
    NLP gensim 相似度计算
    linux shell expect 自动交互脚本
    docker 安装镜像
    数据库 MySQL 数据导入导出
    爬虫 puppeteer
    Linux ssh相关
  • 原文地址:https://www.cnblogs.com/zhangboblogs/p/8623691.html
Copyright © 2020-2023  润新知