在 Python 中实现多线程处理可以大大提高程序的并发性和效率。下面是一些基本的实现多线程的方法:
使用 threading 模块:threading 模块提供了一个 Thread 类,可以创建并启动一个新线程。示例代码如下:
import threading def worker(num): """thread worker function""" print(f"Worker {num} started") # do some work here print(f"Worker {num} finished") threads = [] for i in range(5): t = threading.Thread(target=worker, args=(i,)) threads.append(t) t.start() # wait for all threads to finish for t in threads: t.join()
上述代码中,首先定义了一个 worker 函数,用于在每个线程中执行任务。然后使用 threading.Thread 创建了 5 个新线程,并将它们添加到一个列表中。最后,使用 join() 方法等待所有线程执行完毕。
使用 concurrent.futures 模块:concurrent.futures 模块提供了一些高级的线程池和进程池的接口,可以方便地管理线程和进程。示例代码如下:
import concurrent.futures def worker(num): """thread worker function""" print(f"Worker {num} started") # do some work here print(f"Worker {num} finished") with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor: for i in range(5): executor.submit(worker, i)
上述代码中,首先定义了一个 worker 函数,用于在每个线程中执行任务。然后使用 concurrent.futures.ThreadPoolExecutor 创建一个包含 5 个线程的线程池,并使用 submit 方法将任务提交给线程池。
需要注意的是,由于 GIL(全局解释器锁)的存在,Python 中的多线程并不能实现真正的并行处理。如果需要进行 CPU 密集型的计算任务,建议使用 multiprocessing 模块或者将任务交给 C 或者 Cython 等其他语言处理。