Python多线程与多进程知识梳理
from cuncurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor
import flask
-
多进程
-
环境之间是相互完全隔离的(定义pool的时候,它所依赖的这些函数必须都已经声明完了,就是要放到所使用到的函数最下面)
app = flask.Flask(__name__)
"""
一堆代码
"""
if __name__ == "__main__":
process_pool = ProcessPoolExecutor()
app.run() -
-
多线程
-
定义到哪里都没问题(共享当前进程的所有环境)
app = flask.Flask(__name__)
process_pool = ThreadPoolExecutor()
"""
一堆代码
"""
if __name__ == "__main__":
app.run() -
补充:
把子进程p设置为守护进程,以后主进程退出子进程直接销毁(默认是主进程需要等待子进程执行完才结束)
p.daemon=True
退出主进程之前,先让子进程p销毁
p.terminate()
当前进程(主进程)等待子进程p执行完成后代码再继续往下执行
p.join()
另外进程间不共享全局变量