python虚假的多线程在计算量大的程序中很折磨,真正的多进程需要考虑数据同步问题。这里讨论一下如何同步类的实例,并调用类里的方法。调用类的方法时,应该
import multiprocessingimport randomfrom multiprocessing.managers import BaseManagerimport anytreeimport timeclass MyTree(anytree.Node):def __init__(self, name, **kwargs):super().__init__(name, **kwargs)self.num = 0def add_one(self):self.num += 1a = 2**3 + 98**83/12time.sleep(random.random())def add_one(t: MyTree):t.add_one()if __name__ == '__main__':manager = BaseManager()manager.register('MyTree', MyTree)manager.start()t = manager.MyTree('a')print(t)l = []for i in range(200):p = multiprocessing.Process(target=add_one, args=(t, ))l.append(p)p.start()for p in l:print('remaining: ', len(multiprocessing.active_children()))p.join()print(t)
