并发进程

1.异步同步

from multiprocessing import Process
import time
import random
def func(i):
    time.sleep(2)
    print('我是%s'%i)
if __name__ == '__main__':
    l = []
    stattime = time.time()
    addr = ['河南的','山东的','辽宁的','湖南的']
    for i in addr:
        p = Process(target=func,args=(i,))
        p.start()
        # p.join()  #跟下面的子进程的区别,结果一样,但时间效率不一样
        l.append(p)
    [p.join() for p in l]

    print('我选%s'%(random.choice(addr)))
    endtime = time.time()
    print(endtime-stattime)
  1. 如果join加在for循环里面,相对于主进程来说,我每次都运行一个进程,等这个进程结束后,再运行下一个;
  2. 如果把每个子进程加在列表中,用列表推导式一次性join,相对主进程来说,你异步执行了四个子进程,然后一下子join
  3. 所以join本身没有节省时间,但是在让子进程执行时,一个是只执行了一个,一个一下执行了四个;

猜你喜欢

转载自blog.csdn.net/hgdl_sanren/article/details/81878663