• python多进程


    python的多线程不适合CPU密集型的任务,适合IO【文件读写,网络数据】密集型的任务

    1.多进程

    import multiprocessing
    import time
    
    def run(name):
        time.sleep(2)
        print('name', name)
    
    if __name__ == '__main__':
        p = multiprocessing.Process(target=run, args=('bob', ))
        p.start()

    获取进程ID:

      os.getppid()   --父进程

      os.getpid()   ---当前进程的id

    进程间通信

    利用中间件queue.Queue,可以实现线程间通信:

      q = queue.Queue()

      q.put(value)

      q.get()

    利用中间件Queue实现进程通信:

    from multiprocessing import Process, Queue
     
    def f(q):
        q.put([42, None, 'hello'])
     
    if __name__ == '__main__':
        q = Queue()
        p = Process(target=f, args=(q,))
        p.start()
        print(q.get())    # prints "[42, None, 'hello']"
        p.join() #等待进程结束

    使用pipes实现进程通信:

      child_conn发送一次,parent_conn只能接受一次

    from multiprocessing import Process, Pipe
     
    def f(conn):
        conn.send([42, None, 'hello'])  #发送端口
        conn.close()
     
    if __name__ == '__main__':
        parent_conn, child_conn = Pipe()  # 管道的两头
        p = Process(target=f, args=(child_conn,))
        p.start()
        print(parent_conn.recv())   # prints "[42, None, 'hello']"  接受端
        p.join()

    使用manager实现线程间数据共享

    from multiprocessing import Process, Manager
     
    def f(d, l):
        d[1] = '1'
        d['2'] = 2
        d[0.25] = None
        l.append(1)
        print(l)
     
    if __name__ == '__main__':
        with Manager() as manager:
            d = manager.dict()
     
            l = manager.list(range(5))
            p_list = []
            for i in range(10):
                p = Process(target=f, args=(d, l))
                p.start()
                p_list.append(p)
            for res in p_list:
                res.join()
     
            print(d)
            print(l)
  • 相关阅读:
    oa_mvc_easyui_删除(6)
    oa_mvc_easyui_详细页(5)
    oa_mvc_easyui_分页(4)
    oa_mvc_easyui_后台布局(3)
    oa_mvc_easyui_登录完成(2)
    oa_mvc_easyui_项目搭建及登录页面验证码(1)
    第六篇 ajax
    AOP切入点表达式
    开发的时候,有异步回调的时候,问题终于解决了
    mysql数据表结构查询
  • 原文地址:https://www.cnblogs.com/zhuxiang1633/p/9377034.html
Copyright © 2020-2023  润新知