线程的概念

Posted marklijian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程的概念相关的知识,希望对你有一定的参考价值。

线程

线程的内容(类比)

操作系统————工厂

进程————车间

线程————车间里的流水线

cpu————流水线运行所必需的电源

线程和进程的比较

两种不是一个概念,一般来说是无法比较的

功能上

  • 进程
    • 用来把资源集中到一起
    • 进程只是一个资源单位,或者说资源集合
  • 线程
    • cpu的执行单位(最小的)

运行程序

  • 进程
    • 申请内存空间
    • 将程序放入解释器,
      在放入该内存空间
  • 线程
    • 运行代码

过程描述

  • 进程
    • 资源的申请与销毁的过程
  • 线程
    • 单指代码的执行过程

资源

  • 进程
    • 彼此隔离
    • 竞争关系
  • 线程
    • 资源共享
    • 合作关系

创建速度

  • 进程
    • 需要向操作系统申请空间
  • 线程
    • 告诉操作系统要新的线程
    • 就像在这里开了个分岔口,一条路变成两条路

开启线程的两种方式

方式一

  • 使用函数

方式二

  • 使用类

线程vs进程

速度

from multiprocessing import  Process
from threading import Thread
import time

def test():
    pass


if __name__ == '__main__':
    p = Process(target=test)
    t = Thread(target=test)
    start1 = time.time()
    p.start()
    p.join()
    end1 = time.time()
    start2 = time.time()
    t.start()
    t.join()
    end2 = time.time()

    print(end1 - start1)
    print(end2 - start2)
  • 线程要远快于进程

资源共享

from multiprocessing import  Process
from threading import Thread
import time
x = 1
def test():
    global x
    x= 100
    print("我完成了")


if __name__ == '__main__':
    # 查看进程是否可修改数据

    p = Process(target=test)
    p.start()
    time.sleep(2)
    print(x)


    # 查看线程是否可修改数据

    # t = Thread(target=test)
    # t.start()
    #
    # time.sleep(1)
    # print(x)
  • 线程共享资源
  • 进程间彼此隔离

XMind: ZEN - Trial Version

以上是关于线程的概念的主要内容,如果未能解决你的问题,请参考以下文章

C# 线程线程池Task概念+代码实践

Linux:详解多线程(线程概念线程控制—线程创建线程终止线程等待)

Linux多线程——概念

Linux入门多线程(线程概念生产者消费者模型消息队列线程池)万字解说

Linux入门多线程(线程概念生产者消费者模型消息队列线程池)万字解说

Linux入门多线程(线程概念生产者消费者模型消息队列线程池)万字解说