Ubuntu上Python多线程编程怎么写
作者:OpenWorld
时间:2026-07-31
浏览:0
在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模块来实现真正的并行计算。
作者最新文章
三星 Galaxy A08 渲染图曝光:Helio G99 芯片与 6000mAh 电池配置解析
2026-09-08 17:14
OPPO Find X10 Pro Max 影像规格详解:三颗2亿像素镜头与全焦段8K视频能力
2026-09-08 16:41
PDF转HTML在线转换器怎么选?转换后网页排版怎么查?
2026-09-04 11:02
AE教程书籍挑选指南:零基础、动效与合成方向实战标准
2026-09-02 13:31
教程书籍使用SAI软件Logo要单独授权吗:商标引用与出版合规要点
2026-09-02 11:50
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多


































