线程的概念
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
以上是关于线程的概念的主要内容,如果未能解决你的问题,请参考以下文章
Linux:详解多线程(线程概念线程控制—线程创建线程终止线程等待)
Linux入门多线程(线程概念生产者消费者模型消息队列线程池)万字解说