Python 多处理无法从共享集中读取

Python multiprocessing unable to read from shared set

我刚刚开始将 multiprocessing 模块用于从共享 python set() 读取的进程。但是从 p.map 开始,它的行为就好像集合是空的。但是,当我直接声明集合 a = set(["portugal", "india"]) 而不通过 init 模块时,一切正常。

这里有什么问题?我的实际处理很复杂。我如何确保代码像使用单处理器一样工作?

from multiprocessing import Pool

class ABC:
    a = set()
    def __init__(self):
        ABC.a.add("portugal")
        ABC.a.add("india") 
    def is_loc(text):
        return text in ABC.a

def main():
    ABC()

    locs = ["portugal", "india", "om", "pitata"]
    with Pool(4) as p:
        print(p.map(ABC.is_loc, locs))  # [False, False, False, False]

    res = list(map(ABC.is_loc, locs))
    print(res)    # [True, True, False, False]

if __name__ == '__main__':
    main()

不知道为什么,但调用它会得到正确的结果

multiprocessing.set_start_method("fork")