python for循环多线程:是什么、代码示例和详细解释

在Python中,可以使用threading模块来创建多线程。for循环和多线程的结合通常用于并行执行某个任务的多个实例,每个实例在一个单独的线程中运行。

下面是一个简单的示例,演示如何在for循环中创建多个线程:

import threading
import time

def worker(thread_num):
    print(f"Thread {thread_num} starting")
    time.sleep(2)  # 模拟一些工作
    print(f"Thread {thread_num} finished")

# 创建5个线程并启动
for i in range(5):
    thread = threading.Thread(target=worker, args=(i,))
    thread.start()

# 等待所有线程完成
for thread in threading.enumerate():
    if thread != threading.current_thread():
        thread.join()

print("All threads have finished")

这个例子中,worker函数是线程将要执行的任务,它接受一个参数thread_num,表示线程的编号。在for循环中,我们创建了5个线程,每个线程都调用worker函数,传递自己的编号作为参数。

在线程启动后,程序会继续执行,而不会等待线程完成。因此,我们在for循环外部使用threading.enumerate()来迭代所有线程,并调用join()方法等待它们完成。这确保了在打印"All threads have finished"之前,所有线程都已经执行完毕。

需要注意的是,Python的全局解释器锁(Global Interpreter Lock,GIL)会在同一时刻只允许一个线程执行Python字节码。因此,在CPU密集型任务中,使用多线程可能无法充分利用多核处理器。在这种情况下,考虑使用multiprocessing模块创建多个进程来实现并行执行。