多进程和多线程

多线程可以实现代码并行,提高运行效率。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

未读

[1] https://thief.one/2016/11/23/Python-multiprocessing/

版权声明:本文为yefan19原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/yefan19/p/12728162.html