在多线程环境中 fork
首先不谈 Python, 我们思考一下, 在多线程环境下如果执行 fork 会怎样? 在新的进程中, 会不会所有线程都在运行?...但是这时候其他线程持有的锁并不会自动转化到当前线程, 所以可能造成死锁....所以也就不会等待其他线程退出
在 Python 3.4 中引入了对 spawn 系统调用的支持, 可以通过 multiprocessing.set_start_method 来设定创建进程使用的系统调用...在 *nix 操作系统上, 当使用 multiprocessing 的时候, 默认调用的是 fork, 在新的进程中所有导入的包都已经在了, 所以不会再 import 一次....而在 Windows 系统上, 使用 multiprocessing 创建新的进程时, 所有包都会被在新进程中重新 import 一遍, 如果 import 操作是对外部系统有副作用的, 就会造成不同.