python虚假的多线程在计算量大的程序中很折磨,真正的多进程需要考虑数据同步问题。这里讨论一下如何同步类的实例,并调用类里的方法。调用类的方法时,应该
import multiprocessing
import random
from multiprocessing.managers import BaseManager
import anytree
import time
class MyTree(anytree.Node):
def __init__(self, name, **kwargs):
super().__init__(name, **kwargs)
self.num = 0
def add_one(self):
self.num += 1
a = 2**3 + 98**83/12
time.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)