Ubuntu上Python多线程编程怎么写
作者:OpenWorld
时间:2026-07-31
浏览:6
在Ubuntu上使用threading模块实现Python多线程编程,通过创建Thread对象、调用start()和join()管理线程。共享数据时需用Lock避免竞态条件。由于全局解释器锁(GIL)限制,CPU密集型任务应使用multiprocessing模块,而I/O密集型任务适合多线程,且可使用队列实现线程间通信。
本文目录
在Ubuntu上做Python多线程编程,标准库里的threading模块是首选工具。先看一个最基础的例子,演示如何创建和启动线程:

import threading# 定义一个线程要执行的函数def print_numbers():for i in range(5):print(f"Number from thread: {i}")# 创建线程对象thread1 = threading.Thread(target=print_numbers)thread2 = threading.Thread(target=print_numbers)# 启动线程thread1.start()thread2.start()# 等待所有线程完成thread1.join()thread2.join()print("Finished executing threads")这段代码定义了一个print_numbers函数,它会循环打印数字。然后创建两个Thread对象,都指向同一个函数。调用start()启动线程,再用join()等待它们跑完。需要注意,由于线程是并发执行的,打印出来的数字可能会交错出现——两个线程同时访问标准输出,结果就容易乱序。
如果想在多个线程之间共享数据,就得用锁(Lock)来避免竞态条件。下面这个例子展示了带锁的写法:
import threading# 创建一个锁对象lock = threading.Lock()# 定义一个线程要执行的函数def print_numbers_with_lock(thread_name):for i in range(5):# 获取锁,确保同一时间只有一个线程可以执行这段代码with lock:print(f"Number from {thread_name}: {i}")# 创建线程对象thread1 = threading.Thread(target=print_numbers_with_lock, args=("Thread-1",))thread2 = threading.Thread(target=print_numbers_with_lock, args=("Thread-2",))# 启动线程thread1.start()thread2.start()# 等待所有线程完成thread1.join()thread2.join()print("Finished executing threads")这里创建了一个Lock对象,在print_numbers_with_lock函数里用with lock确保每次只有一个线程能执行打印操作。这样就不会出现两个线程同时输出导致的数据混乱了。
最后提一下Python的全局解释器锁(GIL)。它限制了同一时刻只能有一个线程执行Python字节码,所以对于CPU密集型任务,多线程未必能带来性能提升。这种情况下,可以考虑用multiprocessing模块来实现真正的并行计算。
作者最新文章
PDF图片太多怎么批量压缩?PDF文档如何压缩变小?
2026-10-27 11:48
花4700元买RTX 5070:收到却是一堆20年前的电子垃圾!
2026-10-26 16:25
Aperty人像精修指南:去除面部红晕斑点与调整阴影
2026-10-22 21:53
即梦AI怎么导出到剪映继续剪辑?
2026-10-22 19:49
PDF转TXT小说怎么不乱码?手机PDF转TXT用哪个?
2026-10-17 16:32
下一篇:
Ubuntu上Python学习资源有哪些
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多

































