python-多线程

python-多线程

1. 什么是线程

在了解线程前,我们需要首先了解一下进程,并了解其与线程之间的关系。

1)进程可以看做一个独立的应用,而线程却不可以;

2)进程有自己独立的内存地址空间(即不共享内存,并互不影响),

     线程只是进程的不同执行路径,线程没有独立的内存地址空间;

3)一个进程最少包含一个线程,同一个进程下的多个线程共享进程的地址空间,

     一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行;

4)每个进程都有一个程序运行的入口,顺序执行序列和程序的出口,

     但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制;

5)进程是资源分配的最小单位,线程是CPU调度的最小单位

     线程就是来工作的,进程是拥有资源者

6)进程之间的切换比线程之间的切换开销大,使用多线程实现多任务并发执行比使用多进程效率高     

      说明:操作系统在创建进程时,需要为该进程分配独立的内存空间及其他相关资源,而线程的创建相对简单的多

7)每个线程都有他自己的一组CPU寄存器,称为线程的上下文,该上下文反映了线程上次运行该线程的CPU寄存器的状态。

   指令指针和堆栈指针寄存器是线程上下文中两个最重要的寄存器,线程总是在进程得到上下文中运行的,这些地址都用于标志拥有线程的进程地址空间中的内存。

        线程可以被抢占(中断)。

        在其他线程正在运行时,线程可以暂时搁置(也称为睡眠) -- 这就是线程的退让。

 

2. 为什么要使用多线程

1)使用多线程可以把占据时间长的任务放到后台去处理(比如IO操作,网络数据的收发等),这时我们可以释放一些资源,如内存占用等

2)使用多线程,程序的运行速度会可能会加快

 

3. python实现多线程

1)自定义线程,继承threading.Thread来实现自定义线程

 1 import threading
 2 import time
 3 
 4 class MyThread(threading.Thread):
 5     
 6 
 7     def __init__(self, num):
 8         super(MyThread, self).__init__()
 9         self.num = num
10 
11     def run(self):
12         print("thread_name: %s, num: %d" % (threading.current_thread().getName(), self.num))
13         time.sleep(2)
14         print("num:", self.num)
15         time.sleep(1)
16         print("end, ", self.num)
17 
18 
19 if __name__ == '__main__':
20     thread1 = MyThread(1)
21     thread2 = MyThread(2)
22     thread1.start()
23     thread2.start()

 

 

参考资料:Python多线程 | 菜鸟教程

参考资料:Python多线程详解

 

posted @ 2021-02-15 17:40  可口可乐嗨  阅读(111)  评论(0编辑  收藏  举报
levels of contents