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)
- 如果join加在for循环里面,相对于主进程来说,我每次都运行一个进程,等这个进程结束后,再运行下一个;
- 如果把每个子进程加在列表中,用列表推导式一次性join,相对主进程来说,你异步执行了四个子进程,然后一下子join
- 所以join本身没有节省时间,但是在让子进程执行时,一个是只执行了一个,一个一下执行了四个;