2022-04-11 - Python multiprocessing subprocess 模块区别

共同点

multiprocessing和subprocess都是对操作系统底层多进程api的封装:

multiprocessing:

  • *nix下默认是fork模式,封装了fork()
  • windows下是spawn模式,调用了windows的多进程api

https://docs.python.org/zh-cn/3/library/multiprocessing.html#contexts-and-start-methods

subprocess:

  • POSIX 上使用类似于os.execvpe() 的行为来执行子程序
  • Windows 上,该类会使用 Windows CreateProcess() 函数

https://docs.python.org/zh-cn/3/library/subprocess.html#subprocess.Popen

不同点

multiprocessing创造的进程必须用于执行若干个(若干段)python脚本,它完全类似threading模块,只是是进程级别的
subprocess则创造了简单的普通进程,并提供了完整的与输入、输出、错误流交互的api,可以获取进程的返回码

例子

使用multiprocessing:

  • 在一个python程序中做一些工作,为了将工作分派到多个处理器核心上

使用subprocess:

  • 在一个python程序中,想执行一些系统命令(ls,git,conda,ipconfig等)
  • 编译运行一些别的语言(例如Java或C++)的文件

你可能感兴趣的:(2022-04-11 - Python multiprocessing subprocess 模块区别)