进程的创建
在一个新进程执行一个新的程序需要两个步骤:
- 创建一个新进程 (fork)
- 通过 exec 系统调用把新的二进制程序加载到该进程
在早期的 UNIX 系统中,调用fork()时,内核会复制所有的内部数据结构. 现在的 UNIX 系统采用 copy-on-write(COW) 的惰性算法的优化策略. fork 新进程的时候,会共享同一个副本的内容. 如果有进行 write 操作,才开始拷贝内存,这样可以减少资源的浪费.
ProcessPoolExector
Python3中的concurrent.futures.ProcessPoolExecutor模块可以非常方便的进行多进程编程. ProcessPoolExecutor是基于multiprocessing模块. multiprocessing模块在linux操作系统下使用fork
创建子进程. 其他操作系统下还有另外两种新建多进程的模式: spawn
, fork server
Pymongo
Pymongo 是线程安全的, 提供了内置的