因为需要提升效率,所以不可避免的用到了多进程。毕竟python中的多线程是伪多线程。
在多进程中经常需要共享变量,这时可以使用Queue等方式来解决,有时候我们还可以用multiprcessing中的manager。manager还可以很方便的实现进程内和进程外的交互。
manager常用的两个方法list,dict
manager = Manager()
d = manager.dict()
l = manager.list()
这里网上很多地方都有说有坑,修改dict内部值的时候,直接赋值是无效的。需要做一个类似于这样
m = d
m['2'] = 2
d = m
的变换。这个没有问题,但是使用list的时候很有意思,在进程内可以直接使用.append()追加,这在进程外是生效的,但是想要清空这个list。这个list是没有clear这个方法的,他会返回这是一个proxylist。
然而,你如果使用
l[:] = []
则可以在进程内清空