python多进程和多线程的比较(推荐python使用多进程)

https://www.jianshu.com/p/a69dec87e646 参考网站

基础知识:

现在的 PC 都是多核的,使用多线程能充分利用 CPU 来提供程序的执行效率。

线程

线程是一个基本的 CPU 执行单元。它必须依托于进程存活。一个线程是一个execution context(执行上下文),即一个 CPU 执行时所需要的一串指令。

进程

进程是指一个程序在给定数据集合上的一次执行过程,是系统进行资源分配和运行调用的独立单位。可以简单地理解为操作系统中正在执行的程序。也就说,每个应用程序都有一个自己的进程。
每一个进程启动时都会最先产生一个线程,即主线程。然后主线程会再创建其他的子线程。

两者的区别

  1. 线程必须在某个进行中执行。
  2. 一个进程可包含多个线程,其中有且只有一个主线程。
  3. 多线程共享同个地址空间、打开的文件以及其他资源。
  4. 多进程共享物理内存、磁盘、打印机以及其他资源。

GIL锁

其他语言,CPU 是多核时是支持多个线程同时执行。但在 Python 中,无论是单核还是多核,同时只能由一个线程在执行。其根源是 GIL 的存在。

GIL 的全称是 Global Interpreter Lock(全局解释器锁),来源是 Python 设计之初的考虑,为了数据安全所做的决定。某个线程想要执行,必须先拿到 GIL,我们可以把 GIL 看作是“通行证”,并且在一个 Python 进程中,GIL 只有一个。拿不到通行证的线程,就不允许进入 CPU 执行。

创建多线程

Python提供两个模块进行多线程的操作,分别是thread和threading,
方法1:直接使用threading.Thread()

创建多进程

Python 要进行多进程操作,需要用到muiltprocessing库,其中的Process类跟threading模块的Thread类很相似。所以直接看代码熟悉多进程。

多进程之间的通信

进程之间不共享数据的。如果进程之间需要进行通信,则要用到Queue模块或者Pipi模块来实现。

猜你喜欢

转载自blog.csdn.net/chengmo123/article/details/85109910