Python的多进程模块multiprocessing可以方便地实现并行计算。该模块允许我们创建进程,每个进程都有自己的内存空间和系统资源,进程之间可以并行地执行任务。
使用multiprocessing实现并行计算的步骤如下:
示例代码如下:
import multiprocessing
def worker(num):
"""进程执行的任务"""
print(f"Worker {num} is starting...")
# 这里可以执行一些耗时的任务
print(f"Worker {num} is done.")
if __name__ == '__main__':
# 创建进程池,大小为4
with multiprocessing.Pool(processes=4) as pool:
# 将任务分配给不同的进程
for i in range(4):
pool.apply_async(worker, args=(i,))
# 等待所有进程执行完毕
pool.close()
pool.join()
上述代码中,我们先定义了一个worker函数,该函数代表进程需要执行的任务。然后在主程序中创建进程池,大小为4,使用apply_async方法将任务分配给不同的进程。最后,在所有进程执行完毕后,关闭进程池。
Python的多线程模块threading也可以实现并行计算。不过需要注意的是,Python的多线程是伪并行,因为GIL(全局解释器锁)的存在,同一时刻只有一个线程可以执行Python字节码。
使用threading实现并行计算的步骤如下:
示例代码如下:
import threading
def worker(num):
"""线程执行的任务"""
print(f"Worker {num} is starting...")
# 这里可以执行一些耗时的任务
print(f"Worker {num} is done.")
if __name__ == '__main__':
# 创建线程
threads = []
for i in range(4):
t = threading.Thread(target=worker, args=(i,))
threads.append(t)
# 将任务分配给不同的线程
for t in threads:
t.start()
# 等待所有线程执行完毕
for t in threads:
t.join()
上述代码中,我们先定义了一个worker函数,该函数代表线程需要执行的任务。然后在主程序中创建4个线程,使用start方法将任务分配给不同的线程。最后,在所有线程执行完毕后,使用join方法等待所有线程执行完毕。