
114、multiprocessing 多进程:Pool、Queue、Pipe、共享内存与 spawn/fork 差异一个让我熬夜到凌晨三点的Bug去年做爬虫项目,用multiprocessing.Pool开8个进程抓取电商数据。本地Mac跑得飞起,部署到CentOS服务器上,进程池里的子进程疯狂报PicklingError。更诡异的是,同样的代码在Windows开发机上直接崩溃——子进程连启动都做不到。那晚我盯着AttributeError: Can't pickle local object看了两个小时,最后发现是fork和spawn的启动方式在作祟。这个坑让我意识到:multiprocessing不是简单的threading替代品,它的底层机制决定了你写的代码在哪个平台能跑、怎么跑、跑多快。Pool:别把它当线程池用很多人把multiprocessing.Pool当成线程池的翻版,这是第一个大坑。线程池共享内存,进程池不共享——每个子进程都有独立的内存空间。frommultiprocessingimp