张芷铭的个人博客

forkserver

forkserver 是 Unix 下 fork 的优化版,先启动独立服务器进程,子进程从中 fork 而来,兼顾多线程安全与启动速度。

与 fork、spawn 对比

方式启动速度多线程安全适用场景
fork不安全单线程程序
spawn安全跨平台、多线程
forkserver中等安全Unix 多线程 + 多进程

原理

  1. 启动时创建干净的服务器进程
  2. 所有子进程从服务器进程 fork
  3. 避免主进程多线程状态污染

使用

1
2
3
4
5
import multiprocessing as mp

mp.set_start_method('forkserver')
p = mp.Process(target=func)
p.start()

注意

  • 仅 Unix 可用(Linux、macOS)
  • 需在 if __name__ == "__main__" 内调用
  • 适用于多线程主进程创建子进程的场景

Comments