在 Python 中,threading
模块用于实现多线程,并提供了一些工具和类来简化线程的创建和同步。而 multiprocessing
模块用于实现多进程,并支持进程的创建、管理和通信。下面分别介绍如何使用 threading
和 multiprocessing
模块:
使用 threading
模块:
创建线程:
import threading def my_function(): # 任务逻辑 thread1 = threading.Thread(target=my_function) thread2 = threading.Thread(target=my_function)
启动线程:
thread1.start() thread2.start()
等待线程结束:
thread1.join() thread2.join()
使用锁进行同步:
import threading lock = threading.Lock() def my_function(): with lock: # 临界区代码
使用 multiprocessing
模块:
创建进程:
from multiprocessing import Process def my_function(): # 任务逻辑 process1 = Process(target=my_function) process2 = Process(target=my_function)
启动进程:
process1.start() process2.start()
等待进程结束:
process1.join() process2.join()
使用进程池(
Pool
):from multiprocessing import Pool def my_function(value): # 任务逻辑 with Pool(processes=2) as pool: results = pool.map(my_function, [1, 2, 3, 4])
这是简单的示例,实际应用中可能需要更复杂的同步机制、进程间通信等。需要注意,在使用 multiprocessing
模块时,目标函数要定义在 if __name__ == "__main__":
语句下,以避免在 Windows 等系统上产生无法序列化的错误。
在选择使用多线程还是多进程时,可以根据任务性质和性能要求进行权衡。多线程适用于 I/O 密集型任务,而多进程适用于 CPU 密集型任务。在任何情况下,都需要注意线程安全和进程安全,以避免潜在的并发问题。