在Python中,threading模块提供了线程相关的操作。线程是程序执行的最小单元,多线程可以让程序同时执行多个任务。
run()不会创建新线程,而是在当前线程执行start()start()方法是启动线程的正确方式。调用start()后:
run()方法中的代码import threading
import time
# 自定义线程类
class MyThread(threading.Thread):
def __init__(self, name):
super().__init__()
self.name = name
def run(self):
print(f"线程 {self.name} 启动")
time.sleep(2)
print(f"线程 {self.name} 完成")
# 创建线程实例
t1 = MyThread("Thread-1")
t2 = MyThread("Thread-2")
# 使用start()启动线程
t1.start()
t2.start()
print("主线程继续执行")由于使用了start()方法,输出顺序不固定:
线程 Thread-1 启动
线程 Thread-2 启动
主线程继续执行
线程 Thread-1 完成
线程 Thread-2 完成1. 主线程创建t1和t2 2. t1.start()启动新线程 3. t2.start()启动另一个线程 4. 主线程继续执行后续代码 5. 两个线程并行执行run()方法
run()方法定义了线程要执行的操作。直接调用run()不会创建新线程,而是在当前线程中顺序执行。
# 使用前例中的MyThread类
t1 = MyThread("Thread-A")
t2 = MyThread("Thread-B")
# 直接调用run()而不是start()
t1.run()
t2.run()
print("主线程继续执行")由于直接调用run(),所有操作都在主线程顺序执行:
线程 Thread-A 启动
线程 Thread-A 完成
线程 Thread-B 启动
线程 Thread-B 完成
主线程继续执行start() vs run():
创建新线程 异步执行 实现并发
定义线程逻辑 可被重写 不要直接调用
避免多次start 注意GIL限制 使用同步机制
掌握start()和run()的正确使用方式,是高效Python多线程编程的基础。合理运用多线程可以显著提高程序的响应速度和处理能力。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。