多线程和多进程-简述
多进程和多线程
多线程可以实现代码并行,提高运行效率。Python 采用 threading 和 Queue 模块实现多线程编程。
线程和进程区分
进程
重量级进程,是程序的一次执行。每个进程有自己的内存空间、数据栈,仅能使用进程间通讯(IPC),而不能直接共享信息。
进程池的大小是每次同时执行的进程数,但是并不会影响主进程申请进程的数量。主进程申请多进程量不等于池子大小[3]。
多进程阻塞和非阻塞[2]
非阻塞:不需要等待。开启几个进程就同时运行几个进程。
- 优点:运行速度快;
- 缺点:输出结果可能杂乱(待验证)。但子进程一定是运行完成后才执行父进程。
阻塞:需要等待进程1结束之后才能运行进程2。即使同时开启多个进程,也需要等待一个进程结束后才能运行下一个。
- 优点:输出顺序合理,相当于加上了锁和释放锁(待验证)。对输出结果有要求可以使用阻塞;
- 缺点:运行速度相对较慢,要等待一个进程结束后才运行下一个进程。
线程
轻量级进程,与进程相似,区别在于所有的线程运行再同一个进程中,共享相同的运行环境。线程由有开始、顺序执行和结束三部分。一个进程中的多个线程之间共享同一片数据空间,所以线程之间可以比进程之间更方便地共享数据以及相互通讯。
参考
[1] https://www.cnblogs.com/hanfei-1005/category/854157.html
[2] https://blog.csdn.net/qq_41562377/article/details/105219269
[3] https://blog.csdn.net/u012969412/article/details/82768882