python-并发编程之线程

本文深入探讨了Python中的线程编程,包括线程的产生、如何创建线程、线程的无序性特点、守护线程的概念以及数据安全问题,并触及了并发中的死锁现象,为理解和应用Python线程提供了全面的指导。
摘要由CSDN通过智能技术生成

1.线程的产生
# 进程
程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。计算机允许多个程序同时加载到内存中,在操作系统的调度下,可以实现并发地执行。这样的设计,大大提高了CPU的利用率。
# 线程的诞生
# 进程的缺点
进程可以提高计算机的利用率。但进程也存在一定的缺点, 比如:
	1.进程在执行的过程中如果阻塞,例如等待输入,整个进程就会挂起,即使进程中有些工作不依赖于输入的数据,也将无法执行。
	2.进程是资源分配的最小单元, 进程创建及销毁会增加时空开销, 多进程的引入就是为了并发的执行任务, 提高CPU的利用率, 然而多进程的创建, 切换, 销毁等操作增加时空开销, 并发性粒度较粗, 并发度不高.

# 线程的产生思想: 
    进程的两项功能---分配系统资源 and 调度分派执行
    将进程的两项功能进行分离, 前一项由进程来完成, 进程负责出面从系统索取资源, 让系统分配资源, 它不需要频繁的切换, 减小时空的消耗. 任务的处理交由线程来完成, cpu可以直接调度线程, 它作为系统调度的基本单位, 进行频繁的调度和切换, 线程的切换相对进程来说, 时空消耗较小, 线程可以看做是"轻型的进程".
    (重要)注意: 进程是资源分配的最小单位, 线程时CPU调度的最小单位. 一个进程中至少有一个线程.
# 线程的特点
1.轻型实体
线程中的实体基本上不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源。
2.独立调度和分派的基本单位。
线程是能独立运行的基本单位,因而也是独立调度和分派的基本单位。线程的切换非常迅速且开销小(在同一进程中的)。
3.共享进程资源。
在同一进程中的各个线程,都可以共享该进程所拥有的资源,这首先表现在:所有线程都具有相同的进程id,这意味着,线程可以访问该进程的每一个内存资源;此外,还可以访问进程所拥有的已打开文件、定时器、信号量机构等。由于同一个进程内的线程共享内存和文件,所以线程之间互相通信不必调用内核。
4.可并发执行。
在一个进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行;同样,不同进程中的线程也能并发执行,充分利用和发挥了处理机与外围设备并行工作的能力。

2.线程模块与线程的创建
# 线程模块
thread和threading, thread是lowB一个, threading模块更加高级.
# 线程的创建一
from threading import Thread
import time
def aoaobed(name):
    time.sleep(2)
    print('%s 起床啦!' %name)

if __name__ == '__main__':
    t=Thread(target=aoaobed,args=('波鑫哥哥',))
    t.start()
    print('主线程')
# 线程创建二:
from threading import Thread
import time
class AoaoBed(Thread):
    def __init__(self,name):
        super().__init__()  # 必须要这么写, 要想直到原因, 自己查去
        self.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值