码迷,mamicode.com
首页 > 编程语言 > 详细

线程的概念

时间:2019-09-23 22:17:18      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:数据   get   流水线   执行   空间   pre   创建   查看   解释   

线程

线程的内容(类比)

操作系统————工厂

进程————车间

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

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

线程的概念

标签:数据   get   流水线   执行   空间   pre   创建   查看   解释   

原文地址:https://www.cnblogs.com/marklijian/p/11575112.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!