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++)的文件
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容