线程:实现多任务的另一种方式
一个进程中,也经常需要同时做多件事,就需要同时运行多个‘子任务’,这些子任务,就是线程
线程又被称为轻量级进程(lightweight process),是更小的执行单元
一个进程可拥有多个并行的(concurrent)线程,当中每一个线程,共享当前进程的资源
一个进程中的线程共享相同的内存单元/内存地址空间可以访问相同的变量和对象,而且它们从同一堆中分配对象通信、数据交换、同步操作
由于线程间的通信是在同一地址空间上进行的,所以不需要额外的通信机制,这就使得通信更简便而且信息传递的速度也更快
线程和进程的区别
进程是系统进⾏资源分配和调度的⼀个独⽴单位
进程在执⾏过程中拥有独⽴的内存单元, ⽽多个线程共享内存, 从⽽极⼤地提⾼了程序的运⾏效率
⼀个程序⾄少有⼀个进程,⼀个进程⾄少有⼀个线程
线程是进程的⼀个实体,是CPU调度和分派的基本单位,它是⽐进程更⼩的能独⽴运⾏的基本单位
线程⾃⼰基本上不拥有系统资源,只拥有⼀点在运⾏中必不可少的资源,但是它可与同属⼀个进程的其他的线程共享进程所拥有的全部资源
线程的划分尺度⼩于进程(资源⽐进程少), 使得多线程程序的并发性⾼
线程不能够独⽴执⾏, 必须依存在进程中
线程和进程在使⽤上各有优缺点: 线程执⾏开销⼩, 但不利于资源的管理和保护; ⽽进程正相反

threading模块
python的thread模块是⽐较底层的模块,在各个操作系统中表现形式不同(低级模块)(了解就好)
python的threading模块是对thread做了⼀些包装的, 可以更加⽅便的被使⽤(高级模块)
thread 有一些缺点,在threading 得到了弥补,所以可直接学习threading
import threading
print('主线程%s启动'%(threading.current_thread().name))
#任何进程默认会启动一个线程,这个线程称为主线程,主线程可以启动新的子线程
#current_thread():返回当前线程的实例
#.name :当前线程的名称
》》》
主线程MainThread启动
创建子线程
创建线程的两种方式:
第一:通过 threading.Thread 直接在线程中运行函数;
第二:通过继承 threading.Thread 类来创建线程;
这种方法只需要重载 threading.Thread 类的 run 方法,然后调用 start()开启线程就可以了
import threading, time
def test01():
print(threading.current_thread().name)
time.sleep(1)
print('good')
print(threading.current_thread().name)
for i in range(3):
t = threading.Thread(target=test01)
t.start()
》》》
MainThread
Thread-1
Thread-2
Thread-3
good
good
good
import threading
class Mytest01(threading.Thread):
def test01(self):
for i in range(3):
print(i)
if __name__ == '__main__':
t1 = Mytest01()
t2 = Mytest01()
t1.start()
t2.start()
来源:CSDN
作者:Python'sGod
链接:https://blog.csdn.net/weixin_44733660/article/details/103245810