一. 课程安排
- 课程内容
- 进程介绍
- 线程和进程之间的对比
- 进程之间的通信
- 进程池之间的通信
二. 课堂笔记
1. 进程介绍
进程:正在执行的程序
程序:没有执行的代码,是一个静态的
2. 线程和进程之间的对比
进程:能够完成多任务,一台电脑上可以同时运行多个QQ
线程:能够完成多任务,一个QQ中的多个聊天窗口
根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位

3. 进程之间的通信
- Queue-队列 先进先出
- 共享全局变量不适用于多进程编程
4. 进程池之间的通信
当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态生成多个进程,但是如果是上百甚至上千个目标,手动的去创建的进程的工作量巨大,此时就可以用到multiprocessing模块提供的Pool方法
from multiprocessing import Poolimport os,time,randomdef worker(msg):t_start = time.time()print('%s开始执行,进程号为%d'%(msg,os.getpid()))time.sleep(random.random()*2)t_stop = time.time()print(msg,"执行完成,耗时%0.2f"%(t_stop-t_start))if __name__ == '__main__':po = Pool(3) # 定义一个进程池for i in range(0,10):po.apply_async(worker,(i,))print("--start--")po.close()po.join()print("--end--")
