当前位置:首页 > 科技  > 软件

Python多线程编程全解析:基础到高级用法

来源: 责编: 时间:2024-03-27 09:24:24 231观看
导读Python中有多线程的支持。Python的threading模块提供了多线程编程的基本工具。在下面,我将列举一些基础的多线程用法和一些高级用法,并提供相应的源代码,其中包含中文注释。基础用法:创建和启动线程import threadingimpor

rIF28资讯网——每日最新资讯28at.com

Python中有多线程的支持。Python的threading模块提供了多线程编程的基本工具。在下面,我将列举一些基础的多线程用法和一些高级用法,并提供相应的源代码,其中包含中文注释。rIF28资讯网——每日最新资讯28at.com

基础用法:

创建和启动线程

import threadingimport time# 定义一个简单的线程类class MyThread(threading.Thread):    def run(self):        for _ in range(5):            print(threading.current_thread().name, "is running")            time.sleep(1)# 创建两个线程实例thread1 = MyThread(name="Thread-1")thread2 = MyThread(name="Thread-2")# 启动线程thread1.start()thread2.start()# 主线程等待所有子线程结束thread1.join()thread2.join()print("Main thread exiting")

线程同步 - 使用锁

import threading# 共享资源counter = 0# 创建锁counter_lock = threading.Lock()# 定义一个简单的线程类class MyThread(threading.Thread):    def run(self):        global counter        for _ in range(5):            with counter_lock:  # 使用锁保护临界区                counter += 1                print(threading.current_thread().name, "Counter:", counter)# 创建两个线程实例thread1 = MyThread(name="Thread-1")thread2 = MyThread(name="Thread-2")# 启动线程thread1.start()thread2.start()# 主线程等待所有子线程结束thread1.join()thread2.join()print("Main thread exiting")

高级用法:

使用线程池

import concurrent.futuresimport time# 定义一个简单的任务函数def task(name):    print(f"{name} is running")    time.sleep(2)    return f"{name} is done"# 使用线程池with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:    # 提交任务给线程池    future_to_name = {executor.submit(task, f"Thread-{i}"): f"Thread-{i}" for i in range(5)}    # 获取任务结果    for future in concurrent.futures.as_completed(future_to_name):        name = future_to_name[future]        try:            result = future.result()            print(f"{name}: {result}")        except Exception as e:            print(f"{name}: {e}")

使用Condition进行线程间通信

import threadingimport time# 共享资源shared_resource = None# 创建条件变量condition = threading.Condition()# 定义一个写线程class WriterThread(threading.Thread):    def run(self):        global shared_resource        for _ in range(5):            with condition:                shared_resource = "Write data"                print("Writer wrote:", shared_resource)                condition.notify()  # 通知等待的线程                condition.wait()  # 等待其他线程通知# 定义一个读线程class ReaderThread(threading.Thread):    def run(self):        global shared_resource        for _ in range(5):            with condition:                while shared_resource is None:                    condition.wait()  # 等待写线程通知                print("Reader read:", shared_resource)                shared_resource = None                condition.notify()  # 通知写线程# 创建写线程和读线程writer_thread = WriterThread()reader_thread = ReaderThread()# 启动线程writer_thread.start()reader_thread.start()# 主线程等待所有子线程结束writer_thread.join()reader_thread.join()print("Main thread exiting")

这些例子涵盖了一些基础和高级的多线程用法。请注意,在Python中由于全局解释器锁(GIL)的存在,多线程并不能充分利用多核处理器。如果需要充分利用多核处理器,可以考虑使用multiprocessing模块进行多进程编程。rIF28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-79601-0.htmlPython多线程编程全解析:基础到高级用法

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 面试官:只知道v-model是modelValue语法糖,那你可以走了

下一篇: Vue3-Emoji-Picker一款基于Vue3的emoji表情选择器深度解析与实践

标签:
  • 热门焦点
  • 8月总票房已突破10亿!《封神》第一:口碑已经成了

    8月5日消息,据灯塔专业版数据,截至8月5日9时35分,8月总票房(含预售)已突破10亿。其中,《封神》以大比分的优势领先。根据官方消息,目前该片总票房已经超过14.
  • 得物效率前端微应用推进过程与思考

    一、背景效率工程随着业务的发展,组织规模的扩大,越来越多的企业开始意识到协作效率对于企业团队的重要性,甚至是决定其在某个行业竞争中突围的关键,是企业长久生存的根本。得物
  • 如何使用JavaScript创建一只图像放大镜?

    译者 | 布加迪审校 | 重楼如果您曾经浏览过购物网站,可能遇到过图像放大功能。它可以让您放大图像的特定区域,以便浏览。结合这个小小的重要功能可以大大改善您网站的用户体验
  • 多线程开发带来的问题与解决方法

    使用多线程主要会带来以下几个问题:(一)线程安全问题  线程安全问题指的是在某一线程从开始访问到结束访问某一数据期间,该数据被其他的线程所修改,那么对于当前线程而言,该线程
  • 三万字盘点 Spring 九大核心基础功能

    大家好,我是三友~~今天来跟大家聊一聊Spring的9大核心基础功能。话不多说,先上目录:图片友情提示,本文过长,建议收藏,嘿嘿嘿!一、资源管理资源管理是Spring的一个核心的基础功能,不
  • 10天营收超1亿美元,《星铁》比《原神》差在哪?

    来源:伯虎财经作者:陈平安即便你没玩过《原神》,你一定听说过的它的大名。恨它的人把《原神》开服那天称作是中国游戏史上最黑暗的一天,有粉丝因为索尼在PS平台上线《原神》,怒而
  • 华为发布HarmonyOS 4:更好玩、更流畅、更安全

    在8月4日的华为开发者大会2023(HDC.Together)大会上,HarmonyOS 4正式发布。自2019年发布以来,HarmonyOS一直以用户为中心,经历四年多的发展HarmonyOS已
  • 三星显示已开始为AR设备研发硅基LED微显示屏

    7月18日消息,据外媒报道,随着苹果首款头显产品Vision Pro在6月份正式推出,AR/VR/MR等头显产品也就将成为各大公司下一个重要的竞争领域,对显示屏这一关
  • 机构称Q2全球智能手机出货量同比下滑11% 苹果份额依旧第2

    7月20日消息,据外媒报道,研究机构的报告显示,由于需求下滑,今年二季度全球智能手机的出货量,同比下滑了11%,三星、苹果等主要厂商的销量,较去年同期均有下
Top