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

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

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • 官方承诺:K60至尊版将会首批升级MIUI 15

    全新的MIUI 15今天也有了消息,在官宣了K60至尊版将会搭载天玑9200+处理器和独显芯片X7的同时,Redmi给出了官方承诺,K60至尊重大更新首批升级,会首批推送MIUI 15。也就是说虽然
  • 7月安卓手机性价比榜:努比亚+红魔两款新机入榜

    7月登场的新机有努比亚Z50S Pro和红魔8S Pro,除了三星之外目前唯二的两款搭载超频版骁龙8Gen2处理器的产品,而且努比亚和红魔也一贯有着不错的性价比,所以在本次的性价比榜单
  • 如何通过Python线程池实现异步编程?

    线程池的概念和基本原理线程池是一种并发处理机制,它可以在程序启动时创建一组线程,并将它们置于等待任务的状态。当任务到达时,线程池中的某个线程会被唤醒并执行任务,执行完任
  • 一文搞定Java NIO,以及各种奇葩流

    大家好,我是哪吒。很多朋友问我,如何才能学好IO流,对各种流的概念,云里雾里的,不求甚解。用到的时候,现百度,功能虽然实现了,但是为什么用这个?不知道。更别说效率问题了~下次再遇到,
  • 2天涨粉255万,又一赛道在抖音爆火

    来源:运营研究社作者 | 张知白编辑 | 杨佩汶设计 | 晏谈梦洁这个暑期,旅游赛道彻底火了:有的「地方」火了——贵州村超旅游收入 1 个月超过 12 亿;有的「博主」火了&m
  • ESG的面子与里子

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之三伏大幕拉起,各地高温预警不绝,但处于厄尔尼诺大“烤”之下的除了众生,还有各大企业发布的ESG报告。ESG是“环境保
  • 华为HarmonyOS 4.0将于8月4日发布 或搭载AI大模型技术

    华为宣布HarmonyOS4.0将于8月4日正式发布。此前,华为已经针对开发者公布了HarmonyOS4.0,以便于开发者提前进行适配,也因此被曝光出了一些新系统的特性
  • 国行版三星Galaxy Z Fold5/Z Flip5发布 售价7499元起

    2023年8月3日,三星电子举行Galaxy新品中国发布会,正式在国内推出了新一代折叠屏智能手机三星Galaxy Z Fold5与Galaxy Z Flip5,以及三星Galaxy Tab S9
  • 三星Galaxy Z Fold5今日亮相:厚度缩减但仍略显厚重

    据官方此前宣布,三星将于7月26日也就是今天在韩国首尔举办Unpacked活动,届时将带来带来包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy
Top