基本说明
多进程是指在同一台计算机中同时运行多个独立的进程。每个进程都有自己的地址空间,可用于执行一些特定的任务。这些进程可以同时执行,从而提高了程序的性能和效率。多进程可以在多核计算机上实现真正的并行计算,可以同时运行多个程序,从而大大提高了计算机的利用率。
在多进程编程中,进程之间是独立的,它们各自运行自己的程序,有自己的地址空间和系统资源,不会相互干扰。每个进程都有自己的PID(进程标识符),它是一个唯一的标识符,用于在系统中识别该进程。多进程可以通过IPC(进程间通信)来实现数据共享和通信。
Python的多进程模块multiprocessing
提供了一种方便的方法来创建和管理多个进程。它可以在单个Python解释器中创建多个进程,从而实现并行计算。multiprocessing
模块还提供了一些方便的功能,如进程池、进程通信和共享内存等。
多进程编程可以在很多场景中提高程序的运行效率,如CPU密集型任务、I/O密集型任务、并行计算、大规模数据处理和机器学习等。但需要注意多进程之间的数据同步和通信,以避免数据竞争和死锁等问题。
import multiprocessing
from PIL import Image, ImageFilter
def process_image(filename, size, q):
"""使用高斯模糊对图像进行处理"""
img = Image.open(filename)
img = img.resize(size)
img = img.filter(ImageFilter.GaussianBlur(radius=5))
q.put(img)
if __name__ == '__main__':
filenames = ["image1.jpg", "image2.jpg", "image3.jpg"]
size = (800, 800)
q = multiprocessing.Queue()
processes = []
for filename in filenames:
p = multiprocessing.Process(target=process_image, args=(filename, size, q))
processes.append(p)
p.start()
for p in processes:
p.join()
images = []
while not q.empty():
images.append(q.get())
for i, img in enumerate(images):
img.save(f"processed_image_{
i}.jpg"