温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python多线程如何实现

发布时间:2026-09-24 21:52:50 来源:亿速云 阅读:88 作者:小樊 栏目:编程语言

在 Python 中,多线程主要通过标准库 threading 模块来实现。下面从基础用法 → 常见场景 → 注意事项逐步说明。


一、最基础的多线程示例

import threading
import time

def worker(name):
    print(f"{name} 开始")
    time.sleep(2)
    print(f"{name} 结束")

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

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

# 等待线程结束
t1.join()
t2.join()

print("主线程结束")

✅ target:线程要执行的函数
✅ args:传给函数的参数(必须是元组)
✅ start():启动线程
✅ join():等待线程执行完


二、使用类方式创建线程(更面向对象)

import threading

class MyThread(threading.Thread):
    def __init__(self, name):
        super().__init__()
        self.name = name

    def run(self):
        print(f"{self.name} 正在运行")

t = MyThread("线程A")
t.start()
t.join()

三、多线程共享变量(⚠️注意线程安全)

import threading

count = 0
lock = threading.Lock()

def task():
    global count
    for _ in range(100000):
        with lock:
            count += 1

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

for t in threads:
    t.join()

print(count)

✅ 使用 threading.Lock() 避免竞态条件


四、线程池(推荐用法)

适合大量短任务:

from concurrent.futures import ThreadPoolExecutor

def task(n):
    return n * n

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

✅ 自动管理线程
✅ 避免频繁创建销毁线程


五、Python 多线程的“坑”(非常重要)

⚠️ GIL(全局解释器锁)

  • CPU 密集型任务(如计算):多线程不会更快
  • I/O 密集型任务(如网络、文件):多线程有效

✅ CPU 密集型建议用:

  • multiprocessing(多进程)
  • 或 asyncio

六、常见使用场景总结

场景 是否适合多线程
网络请求 ✅ 非常适合
文件读写 ✅ 适合
大量计算 ❌ 不适合
高并发服务 ✅ + 线程池

如果你愿意,我可以:

  • 给你一个爬虫多线程示例
  • 对比 多线程 vs 多进程 vs 协程
  • 结合你当前项目讲具体用法

你现在是打算用多线程做什么?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手