先理解阻塞的概念 , 阻塞: 就是当本任务完成了,才能继续运行,后边的任务需要排队。

***阻塞的执行模式 是 产生一个任务,立马就让 进程1 执行, 再产生一个,然后让进程2执行下一个。轮流执行 直到执行完毕, 
  非阻塞的模式 执行, 立刻产生十个任务 ,分配给进程池执行。***

把上节的代码只要改一个单词就完成了,

就是 把 apply_async >>>> apply

总结 : 基本上不会用,一个个运行 达不到多任务 同时执行,了解下就可以了。

from multiprocessing  import Pool   # 导入Pool 
import time,os    
def test(num):
    for i in range(5):   # 
        print("这是我-----第%d:进程任务----第%d:子任务,它的进程号码为%d"%(num,i,os.getpid()))
        time.sleep(1)
if __name__=='__main__':
    pool = Pool(2)      # 创造进程池, 并设置进程的数量 
    for i in range(10):
    	print("------------------%d----------------"%(i+1))
        pool.apply(test,(i,))   # 用for 循环  不停的添加进程任务,一共添加十个任务,
        #   阻塞的执行模式 是 产生一个任务,立马就让 test 执行, 万层一个,然后再执行下一个。 直到执行完毕, 
        #非阻塞的模式 执行, 立刻产生十个任务 ,分配给进程池执行。
    pool.close()  # 关闭进程池, 不让添加进程  
    pool.join() # 主函数是不等 子进程的, 所以要用这个,让主进程等待子进程完成。

观察 pid 和任务数

打印结果:

C:\Users\tengfei\AppData\Local\Programs\Python\Python36\python.exe D:/works/Unittest/测试.py
------------------1----------------
这是我-----第0:进程任务----第0:子任务,它的进程号码为2904
这是我-----第0:进程任务----第1:子任务,它的进程号码为2904
这是我-----第0:进程任务----第2:子任务,它的进程号码为2904
这是我-----第0:进程任务----第3:子任务,它的进程号码为2904
这是我-----第0:进程任务----第4:子任务,它的进程号码为2904
------------------2----------------
这是我-----第1:进程任务----第0:子任务,它的进程号码为13620
这是我-----第1:进程任务----第1:子任务,它的进程号码为13620
这是我-----第1:进程任务----第2:子任务,它的进程号码为13620
这是我-----第1:进程任务----第3:子任务,它的进程号码为13620
这是我-----第1:进程任务----第4:子任务,它的进程号码为13620
------------------3----------------
这是我-----第2:进程任务----第0:子任务,它的进程号码为2904
这是我-----第2:进程任务----第1:子任务,它的进程号码为2904
这是我-----第2:进程任务----第2:子任务,它的进程号码为2904
这是我-----第2:进程任务----第3:子任务,它的进程号码为2904
这是我-----第2:进程任务----第4:子任务,它的进程号码为2904
------------------4----------------
这是我-----第3:进程任务----第0:子任务,它的进程号码为13620
这是我-----第3:进程任务----第1:子任务,它的进程号码为13620
这是我-----第3:进程任务----第2:子任务,它的进程号码为13620
这是我-----第3:进程任务----第3:子任务,它的进程号码为13620
这是我-----第3:进程任务----第4:子任务,它的进程号码为13620
------------------5----------------
这是我-----第4:进程任务----第0:子任务,它的进程号码为2904
这是我-----第4:进程任务----第1:子任务,它的进程号码为2904
这是我-----第4:进程任务----第2:子任务,它的进程号码为2904
这是我-----第4:进程任务----第3:子任务,它的进程号码为2904
这是我-----第4:进程任务----第4:子任务,它的进程号码为2904
------------------6----------------
这是我-----第5:进程任务----第0:子任务,它的进程号码为13620
这是我-----第5:进程任务----第1:子任务,它的进程号码为13620
这是我-----第5:进程任务----第2:子任务,它的进程号码为13620
这是我-----第5:进程任务----第3:子任务,它的进程号码为13620
这是我-----第5:进程任务----第4:子任务,它的进程号码为13620
------------------7----------------
这是我-----第6:进程任务----第0:子任务,它的进程号码为2904
这是我-----第6:进程任务----第1:子任务,它的进程号码为2904
这是我-----第6:进程任务----第2:子任务,它的进程号码为2904
这是我-----第6:进程任务----第3:子任务,它的进程号码为2904
这是我-----第6:进程任务----第4:子任务,它的进程号码为2904
------------------8----------------
这是我-----第7:进程任务----第0:子任务,它的进程号码为13620
这是我-----第7:进程任务----第1:子任务,它的进程号码为13620
这是我-----第7:进程任务----第2:子任务,它的进程号码为13620
这是我-----第7:进程任务----第3:子任务,它的进程号码为13620
这是我-----第7:进程任务----第4:子任务,它的进程号码为13620
------------------9----------------
这是我-----第8:进程任务----第0:子任务,它的进程号码为2904
这是我-----第8:进程任务----第1:子任务,它的进程号码为2904
这是我-----第8:进程任务----第2:子任务,它的进程号码为2904
这是我-----第8:进程任务----第3:子任务,它的进程号码为2904
这是我-----第8:进程任务----第4:子任务,它的进程号码为2904
------------------10----------------
这是我-----第9:进程任务----第0:子任务,它的进程号码为13620
这是我-----第9:进程任务----第1:子任务,它的进程号码为13620
这是我-----第9:进程任务----第2:子任务,它的进程号码为13620
这是我-----第9:进程任务----第3:子任务,它的进程号码为13620
这是我-----第9:进程任务----第4:子任务,它的进程号码为13620

Process finished with exit code 0