簡體   English   中英

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")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM