【问题标题】:Python multiprocessing unable to read from shared setPython多处理无法从共享集中读取
【发布时间】:2021-01-29 10:42:20
【问题描述】:

我刚刚开始将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()

【问题讨论】:

    标签: python set python-multiprocessing


    【解决方案1】:

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

    multiprocessing.set_start_method("fork")
    

    【讨论】:

      猜你喜欢
      • 2022-11-12
      • 2021-10-15
      • 2020-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-26
      • 2023-03-10
      • 1970-01-01
      相关资源
      最近更新 更多