import threading
import time
# 定义一个简单的函数作为线程的目标函数
def print_numbers():
for i in range(5):
time.sleep(1)
print(f"Number: {i}")
def print_letters():
for letter in 'ABCDE':
time.sleep(1)
print(f"Letter: {letter}")
# 创建两个线程
thread1 = threading.Thread(target=print_numbers)
thread2 = threading.Thread(target=print_letters)
# 启动线程
thread1.start()
thread2.start()
# 等待两个线程完成
thread1.join()
thread2.join()
print("Both threads have finished.")
在上面的示例中,print_numbers 和 print_letters 分别在两个不同的线程中运行。thread1 和 thread2 分别是这两个线程的实例。通过调用 start() 方法启动线程,通过 join() 方法等待线程完成。
请注意,在多线程编程中,需要小心共享资源的访问,以避免竞争条件和数据不一致的问题。在实际应用中,也可以考虑使用锁(threading.Lock)、条件变量等机制来同步线程。
除了 threading 模块之外,还有一些其他用于并发编程的工具,比如 concurrent.futures 模块中的 ThreadPoolExecutor 和 ProcessPoolExecutor。这些工具提供了更高级别的接口,使并发编程更容易管理。
需要注意的是,由于 Python 的全局解释锁(GIL)限制了同一时刻只能有一个线程执行 Python 字节码,因此在 CPU 密集型任务中,使用多线程并不能实现真正的并行执行。对于 I/O 密集型任务,多线程通常是一个不错的选择。如果需要充分利用多核处理器,可以考虑使用多进程或异步编程(例如使用 asyncio)。
转载请注明出处:http://www.pingtaimeng.com/article/detail/236/Python3