进程与线程有很多相似之处
进程 执行中的程序
线程 轻量级的进程
一个进程可以包含多个线程
对于一个人来说,这个人就是一个进程。而一个人可以做很多事情,这每一件事情就是一个线程
进程包含线程,线程在进程中,一个进程内的线程共享这个进程内的代码等,所以这就导致了数据不安全的问题,所以引入了GIL机制(全局解释器锁)这是Cpython解释器加上的,他将进程内的所有代码等加上锁,一次只能由一个线程调用,这样让代码变得安全但是会导致无法并发执行,效率慢
线程:更加轻量级,线程是CPU调度的最小单位,进程是资源分配的最小单位
开启线程的效率要比开启进程快得多,而且cpu在线程之间的切换比在进程之间切换要快得多
在python中threading来调用线程模块
import os import time from threading import Thread class MyThread(Thread): def run(self): print(‘aa‘,os.getpid()) for i in range(10): t = MyThread() t.start()
在使用线程模块的时候不用加__name__ == ‘__main__‘
import time import threading def func(i): time.sleep(0.5) print(i,threading.currentThread().name,threading.currentThread().ident) # ident 线程id for i in range(10): t = threading.Thread(target=func,args=(i,)) t.start() # print(len(threading.enumerate())) # 返回正在运行着的线程列表 print(threading.activeCount()) #返回正在运行的线程的列表,和总量