python-多线程

本文介绍了线程与进程的区别,强调了线程在资源共享和执行效率上的优势。通过实例展示了如何使用Python的threading模块创建和管理线程。多线程能提高程序运行速度,特别是在处理IO密集型任务时,可释放资源并实现任务并发。
摘要由CSDN通过智能技术生成

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多线程详解

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值