• 进程池 回调函数 管道


    ---------------------------------------------------前进的道路都是由心来描绘的,所以,无论自己处于多么严酷的境遇之中,心头都不应为悲观的思想所萦绕..

    # # ------------------------------------------------------------------------------------------------------------#

    管道:
    Pipe
    Conn1,conn2 = Pipe()

    数据共享:
    M = Manager()
    Dic = m.dict({‘name’:sbalex})
    数据安全的问题
    加锁

    进程池 *****
    Map:异步提交任务,参数是可迭代对象,自带close + join

    Apply :同步提交任务,直接可以收到返回值

    Apply_async() 异步提交任务:res.get() 阻塞效果
    Close join
    回调函数:callback= func [return [xxx]]



    # --------------[管道]--------------
    osError
    esError
    from multiprocessing import Pipe,Process

    def func(conn1,):
    msg = conn1.recv()
    print('>>>>',msg)

    if __name__ == '__main__':
    conn1,conn2 = Pipe()

    p=Process(target=func,args=(conn1,))
    p.start()

    conn2.close()
    conn2.send('0J8K')

    print('主进程结束')

    # --------------[数据共享]--------------

    from multiprocessing import Manager,Process,Lock

    def func(dic):
    l.acquire()
    dic['n'] -= 1
    l.release()

    if __name__ == '__main__':
    m = Manager()
    l = Lock
    dic = m.dict({'n':88})

    p = Process(target=func, args=(dic,))

    p_lst = []

    for i in range(88):
    p_lst.append(i)

    [pp.join() for pp in p_lst]

    p.start()

    # --------------[进程池子]--------------
    from multiprocessing import Pool, Process
    import time


    def func(i):
    num = 0
    for j in range(5):
    num += i


    if __name__ == '__main__':


    p_list = []
    start_time = time.time()
    for i in range(100):
    p = Process(target=func, args=(i,))
    p_list.append(p)
    p.start()
    [pp.join() for pp in p_list]
    end_time = time.time()
    print(end_time - start_time)


    s_time = time.time()
    pool = Pool(4)
    pool.map(func, range(100))
    e_time = time.time()
    x_time = e_time - s_time
    print(x_time)

    # --------------[进程同步的方法]--------------
    from multiprocessing import Process,Pool
    import time

    def func():
    num = 0
    for i in range(5):
    num+=i
    time.sleep(1)
    print(num)
    return num
    if __name__ == '__main__':
    pool = Pool(4)

    for i in range(10):
    res = pool.apply(func,args=(i,))
    #(apply同步串行)
    print(res)

    # --------------[进程异步的方法]--------------
    from multiprocessing import Process, Pool
    import time


    def func():
    num = 0
    for i in range(5):
    num += i
    time.sleep(1)
    print('>>>>', num)
    return num


    if __name__ == '__main__':
    pool = Pool(4)

    r_lst = []
    for i in range(10):
    res = pool.apply_async(func, args=(i,))
    # (apply_async异步)
    r_lst.append(res)
    print(res.get())

    pool.close() # 不是关闭 是锁定
    pool.join()

    for j in r_lst:
    print(j.get())
  • 相关阅读:
    网口
    uart
    wwww
    ddr相关的配置经验
    嵌入式的指令集和寄存器
    协议栈
    《贝贝GO》服务条款
    《贝贝GO》隐私政策
    《贝贝GO》技术支持
    《王牌助理》隐私政策
  • 原文地址:https://www.cnblogs.com/dealdwong2018/p/10038637.html
Copyright © 2020-2023  润新知