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

2018-09-2010:17:30后端程序开发Comments1,668 views字数 992阅读模式

线程与进程

线程和进程的概念我就不多赘述了。可自行网上搜索查找资料了解下。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/5158.html

直接看问题:在 Python 中我们要同时执行多个任务怎么办?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/5158.html

有两种解决方案:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/5158.html

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

当然还有第三种方法,就是启动多个进程,每个进程再启动多个线程,这样同时执行的任务就更多了,当然这种模型更复杂,实际很少采用。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/5158.html

总结一下就是,多任务的实现有3种方式:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/5158.html

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

同时执行多个任务通常各个任务之间并不是没有关联的,而是需要相互通信和协调,有时,任务 1 必须暂停等待任务 2 完成后才能继续执行,有时,任务 3 和任务 4 又不能同时执行,所以,多进程和多线程的程序的复杂度要远远高于我们前面写的单进程单线程的程序。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/5158.html

4.1 多线程编程

其实创建线程之后,线程并不是始终保持一个状态的,其状态大概如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/5158.html

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

线程有着不同的状态,也有不同的类型。大致可分为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/5158.html

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

线程的创建:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/5158.html

Python 提供两个模块进行多线程的操作,分别是 threadthreading文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/5158.html

前者是比较低级的模块,用于更底层的操作,一般应用级别的开发不常用。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/5158.html

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 的基础知识。线程和进程的内容更多还是到网上搜索资料学习,亦或是日后有时间我再更新于此。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/5158.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/5158.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/5158.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定