@
Philippa 假设我有表
class MfAdmin(Base):
id =xxx
....
我是在主进程里初始化 flask-sqlalchemy 的 db, db = SQLAlchemy(app) ,然后在主进程里以 MfAdmin.query 方式查出一组 user_list,然后将 user_list 以 pool.map()的方式( multiprocessing.Pool 创建进程池)在子进程里对不同的 user(MfAdmin 的 id 不一样)进行并发处理,这里有几个疑问:
1. 如果 pool.map ()产生的不同子进程里处理相同 id 的 user,是不是会被共享?从你的回答来看,不会共享。
2. 如果 pool.map ()产生的不同子进程里,其中一个子进程执行 session.commit() ,其他子进程里修改的对象会不会被 commit ?
出于以上担心,我现在的做法是,属于同一个 db = SQLAlchemy(app)的主进程以及通过 pool.map 产生的所有子进程都只做读操作,如果要修改,扔到 redis 的 list 里,由独立的 db = SQLAlchemy(app) 进行同步的修改。