Python基础入门笔记:线程与进程

线程与进程

线程和进程的概念我就不多赘述了。可自行网上搜索查找资料了解下。

直接看问题:在 Python 中我们要同时执行多个任务怎么办?

有两种解决方案:

  1. 一种是启动多个进程,每个进程虽然只有一个线程,但多个进程可以一块执行多个任务。
  2. 还有一种方法是启动一个进程,在一个进程内启动多个线程,这样,多个线程也可以一块执行多个任务。

当然还有第三种方法,就是启动多个进程,每个进程再启动多个线程,这样同时执行的任务就更多了,当然这种模型更复杂,实际很少采用。

总结一下就是,多任务的实现有3种方式:

  • 多进程模式;
  • 多线程模式;
  • 多进程+多线程模式。

同时执行多个任务通常各个任务之间并不是没有关联的,而是需要相互通信和协调,有时,任务 1 必须暂停等待任务 2 完成后才能继续执行,有时,任务 3 和任务 4 又不能同时执行,所以,多进程和多线程的程序的复杂度要远远高于我们前面写的单进程单线程的程序。

4.1 多线程编程

其实创建线程之后,线程并不是始终保持一个状态的,其状态大概如下:

  • New 创建
  • Runnable 就绪。等待调度
  • Running 运行
  • Blocked 阻塞。阻塞可能在 Wait Locked Sleeping
  • Dead 消亡

线程有着不同的状态,也有不同的类型。大致可分为:

  • 主线程
  • 子线程
  • 守护线程(后台线程)
  • 前台线程

线程的创建:

Python 提供两个模块进行多线程的操作,分别是 threadthreading

前者是比较低级的模块,用于更底层的操作,一般应用级别的开发不常用。

import time
import threading


class MyThread(threading.Thread):
    def run(self):
        for i in range(5):
            print('thread {}, @number: {}'.format(self.name, i))
            time.sleep(1)

def main():
    print("Start main threading")

    # 创建三个线程
    threads = [MyThread() for i in range(3)]
    # 启动三个线程
    for t in threads:
        t.start()

    print("End Main threading")


if __name__ == '__main__':
    main()
复制代码

这块的内容还有很多,由于该文重点还是为讲解 Python 的基础知识。线程和进程的内容更多还是到网上搜索资料学习,亦或是日后有时间我再更新于此。

THE END