关于Python多进程访问实例变量疑问

44 阅读1分钟

下面是一个demo,疑问为什么print("当前进程 {} 访问了{}".format(os.getpid(), self._map['age'])) 语句没有执行。求大佬解答

from concurrent.futures import ProcessPoolExecutor
import os
import time
from functools import partial


class Man:
    _map = {}

    def __init__(self) -> None:
        print("初始化了")
        self._map["name"] = 'test'
        self._map["age"] = 0

    def do_rquest(self, age):
        time.sleep(0.1)
        print("当前进程 {} 访问了{}".format(os.getpid(), self._map['age']))
        self._map['age'] += 1

        # print("当前进程 {} 访问了{}:{}".format(os.getpid(), age, self._map['age']))


def myrequest(man: Man):
     man.do_rquest(1)

if __name__ == '__main__':
    man = Man()
    with ProcessPoolExecutor(max_workers=1) as pool:
        pool.map(myrequest,[man for man in  range(0, 10)])

    print(time.time()-d)

下面是demo执行结果:

image.png