Python进程和线程之多线程的使用及说明

 更新时间:2025年09月16日 09:02:18   作者:Derrick__1  
Python多线程通过threading模块实现,主线程默认运行,子线程由Thread类创建并启动,线程共享变量易引发数据混乱,需用Lock同步,但锁可能降低效率或导致死锁,(79字)

Python之多线程的使用

前面提到过进程是由很多线程组成的,那么今天廖老师就详细解释了线程是如何运行的。

首先,Python的标准库提供了两个模块:_threadthreading_thread是低级模块,threading是高级模块,对_thread进行了封装。

绝大多数情况下,我们只需要使用threading这个高级模块。

根据廖老师的例子,运行出来如此的结果。

任何 Python 程序默认都在一个主线程中运行,该线程通常名为 MainThread

threading.current_thread().name用于获取当前正在执行的线程的名称。

t = threading.Thread(target=loop, name='LoopThread')   

这里使用 threading.Thread类来创建一个线程对象 ,也就是我们所需要的支线线程

start()方法会​​启动新线程​​

这意味着 Python 会创建新的执行上下文,并​​几乎同时​​开始在新线程中执行 loop函数

重要的是,调用 start()后,主线程不会阻塞,它会继续向下执行(t.join()),而新线程 LoopThread也开始并发地执行自己的任务。

不过由于多进程中,同一个变量,各自有一份拷贝存在于每个进程中,互不影响,而多线程中,所有变量都由所有线程共享,所以,任何一个变量都可以被任何一个线程修改,因此,线程之间共享数据最大的危险在于多个线程同时改一个变量,把内容给改乱了。

我们这里会引入一个lock语句

balance = 0
lock = threading.Lock()

def run_thread(n):
    for i in range(100000):
        # 先要获取锁:
        lock.acquire()
        try:
            # 放心地改吧:
            change_it(n)
        finally:
            # 改完了一定要释放锁:
            lock.release()

创建一个锁就是通过threading.Lock()来实现。

不过这里的锁虽然可以让我们的内容不那么紊乱,但是包含锁的某段代码实际上只能以单线程模式执行,效率就大大地下降了甚至他会让多个锁在一起执行可能形成一个死锁。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python pygame 项目实战事件监听

    Python pygame 项目实战事件监听

    这篇文章主要介绍了Python pygame 项目实战事件监听,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • 利用Python小工具实现3秒钟将视频转换为音频

    利用Python小工具实现3秒钟将视频转换为音频

    这篇文章主要介绍了利用Python小工具实现 3秒钟将视频转换为音频效果,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • Python Geopy库地理编码和地理距离计算案例展示

    Python Geopy库地理编码和地理距离计算案例展示

    Geopy库是Python处理地理数据的一个强大工具,能够实现地理编码、反向地理编码和地理距离计算,本文详细介绍了Geopy的安装与配置、核心功能、基本和高级用法,并通过实际应用案例展示了其在地理编码与数据可视化、距离计算和位置推荐系统中的应用,感兴趣的朋友一起看看吧
    2025-03-03
  • Python dateutil库简化日期时间处理利器使用场景实践

    Python dateutil库简化日期时间处理利器使用场景实践

    在Python中,处理日期和时间是常见的任务之一,dateutil库是Python标准库中datetime模块的扩展,提供了许多方便的工具和函数,简化了日期和时间的操作
    2023-12-12
  • python肯德尔系数相关性数据分析示例

    python肯德尔系数相关性数据分析示例

    这篇文章主要为大家介绍了python肯德尔系数相关性数据分析示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Python设计模式之抽象工厂模式

    Python设计模式之抽象工厂模式

    这篇文章主要为大家详细介绍了Python设计模式之抽象工厂模式,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • 关于windows下Tensorflow和pytorch安装教程

    关于windows下Tensorflow和pytorch安装教程

    Tensorflow是广泛使用的实现机器学习以及其它涉及大量数学运算的算法库之一。这篇文章主要介绍了Tensorflow和pytorch安装(windows安装),需要的朋友可以参考下
    2020-02-02
  • 详解如何减少python内存的消耗

    详解如何减少python内存的消耗

    这篇文章主要介绍了详解如何减少python内存的消耗,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • 解决遇到PermissionError:[Errno 13] Permission denied:XXXX错误的问题

    解决遇到PermissionError:[Errno 13] Permission den

    遇到"PermissionError:[Errno 13] Permission denied"通常是权限不足导致,解决此问题的方法包括检查并更改文件权限,使用管理员权限运行命令,或接触文件所有者,这些步骤有助于确保用户具有执行操作所需的权限,有时,文件或目录可能被锁定
    2024-09-09
  • python+selenium的web自动化上传操作的实现

    python+selenium的web自动化上传操作的实现

    这篇文章主要介绍了python+selenium的web自动化上传操作的实现,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-08-08

最新评论