这是一个业务场景。
首先在 Spring boot 中,有一个概念叫做 Spring IOC,通过注入,可以让某些类在整个项目周期有唯一实例。
多体现在数据库连接等。
目前,我 python 项目也有一个这样的场景。
redis「封装了 redis 各种操作的类」 需要全局唯一实例 
- 主线程创建 redis 实现类
 
redis 实现类可以传递给进程池中的进程,然后所有进程都使用一个实例 
并且,除了 redis 还有可能创建 mysql 等。
在看这个值钱一定要看 python | 进程池、多进程共享自定义变量 BaseManager
其主要思路如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
   | from concurrent.futures.process import ProcessPoolExecutor from multiprocessing.managers import BaseManager
 
  class A:     def __init__(self):         self.a = None         self.prov()
      def prov(self):         self.a = 1
      def test(self):         self.a = self.a + 1         print(str(self.a))
 
  class T:     def __init__(self, c):         self.test = None         self.c = c         self.proc()
      def proc(self):         self.test = A()
      def test_a(self):         self.test.test()
 
  def proc(d):     d["t"].test_a()
 
  if __name__ == '__main__':     b = BaseManager()     b.register("T", T)     b.start()     t = b.T("123")
      d = {}     d["t"] = t     process_pools = ProcessPoolExecutor(max_workers=4)     for i in range(10):         process_pools.submit(proc, d)
   |