当前位置:首页 > Python > 正文内容

[Python 教程] Python 多线程编程指南

admin6个月前 (03-18)Python213

Python 多线程编程指南

Python 的 threading 模块提供多线程支持。本文介绍多线程编程的基础和实用技巧。

一、创建线程

import threading
import time

def worker(name, delay):
    for i in range(3):
        time.sleep(delay)
        print(f'{name} 执行第 {i+1} 次')

# 创建线程
t1 = threading.Thread(target=worker, args=('线程 1', 1))
t2 = threading.Thread(target=worker, args=('线程 2', 1.5))

# 启动线程
t1.start()
t2.start()

# 等待线程完成
t1.join()
t2.join()

print('所有线程完成')

二、线程池

from concurrent.futures import ThreadPoolExecutor

def task(n):
    time.sleep(1)
    return f'任务 {n} 完成'

with ThreadPoolExecutor(max_workers=3) as executor:
    results = list(executor.map(task, range(5)))
    print(results)

三、线程锁

lock = threading.Lock()
counter = 0

def increment():
    global counter
    for _ in range(1000):
        lock.acquire()
        try:
            counter += 1
        finally:
            lock.release()

threads = []
for _ in range(5):
    t = threading.Thread(target=increment)
    threads.append(t)
    t.start()

for t in threads:
    t.join()

print(f'最终计数:{counter}')

四、守护线程

def daemon_worker():
    while True:
        time.sleep(1)
        print('守护线程运行中...')

d = threading.Thread(target=daemon_worker)
d.setDaemon(True)  # 设置为守护线程
d.start()

五、线程通信

from queue import Queue

queue = Queue()

def producer():
    for i in range(5):
        queue.put(i)
        print(f'生产:{i}')

def consumer():
    while True:
        item = queue.get()
        if item is None:
            break
        print(f'消费:{item}')
        queue.task_done()

p = threading.Thread(target=producer)
c = threading.Thread(target=consumer)
p.start()
c.start()
p.join()
queue.put(None)
c.join()

相关文章

Python 装饰器实战:从基础到高级应用的完整指南

装饰器是 Python 中最优雅也最强大的特性之一。它允许你在不修改原函数代码的前提下,动态地添加功能。本文将带你从装饰器的基础概念出发,逐步掌握其在实际开发中的高级应用技巧。许多初学者对装饰器感到困...

Python 装饰器:从入门到实战的完整指南

装饰器(Decorator)是 Python中一种优雅的设计模式,它允许我们在不修改原函数代码的前提下,动态地添加功能。想象一下,你有一个已经写好的函数,现在需要为它添加日志记录、性能监控、权限验证等...

深入理解 Python 装饰器:从基础到高级的完整指南

什么是装饰器?装饰器本质上是一个 Python 函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能。装饰器的返回值通常也是一个函数对象。这种设计模式遵循了"开放封闭原则"——对扩展开放,...

Python装饰器实战:从入门到精通的5个实用技巧

Python装饰器(Decorator)是Python中最强大的特性之一,它允许我们在不修改原函数代码的情况下,为函数添加额外的功能。从Web框架的日志记录到API的权限验证,装饰器无处不在。本文将通...

Python 装饰器完全指南:从入门到精通

什么是装饰器?装饰器本质上是一个 Python 函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能。装饰器的返回值也是一个函数对象。在 Python 中,装饰器使用 @decorator...

Python 装饰器:从原理到高级实战完全指南

Python 装饰器是一种强大的语法糖,它可以在不修改原函数代码的情况下,为函数添加额外的功能。装饰器的本质是一个接受函数作为参数,并返回一个新函数的高阶函数。 装饰器的基本原理 装饰器的工作原理...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。