犯了一个低级错误,在 flask 框架下,启动另外的脚本,该脚本用线程异步掉,会适时改变某个全局变量,然后在 flask 的多进程环境下又尝试读取该变量的值。

mutiprocessing Manager 下的 dict 解决进程间共享的问题:

import multiprocessing
from multiprocessing import Process,Manager,Lock
file_server = get_host_ip()+":800"
m = multiprocessing.Manager()
shared_dict = m.dict()
lock = Lock()

把 shared_dict 和 lock 传递给需要共享的进程即可