Dictionary 在多处理中,打印函数在另一个打印函数之后给出不同的结果 来自多处理导入池的 从数学导入sqrt,楼层 def是_prime(num): 如果num

Dictionary 在多处理中,打印函数在另一个打印函数之后给出不同的结果 来自多处理导入池的 从数学导入sqrt,楼层 def是_prime(num): 如果num,dictionary,printing,multiprocessing,Dictionary,Printing,Multiprocessing,正如您在该映射中的sum之后所看到的,列表返回空列表,同时也返回与“0”相同的sum。为什么会发生这种情况?有人能解释一下原因吗? 同时,如果我先打印“subs_sum”项,sum(sub_sum)返回0。很快,当我尝试列出sub_sums元素时,在那行代码之后,sub(sum_sums)以任何方式返回0。 from multiprocessing import Pool from math import sqrt, floor def is_prime(num): if num &

正如您在该映射中的sum之后所看到的,列表返回空列表,同时也返回与“0”相同的sum。为什么会发生这种情况?有人能解释一下原因吗?

同时,如果我先打印“subs_sum”项,sum(sub_sum)返回0。很快,当我尝试列出sub_sums元素时,在那行代码之后,sub(sum_sums)以任何方式返回0。

from multiprocessing import Pool
from math import sqrt, floor


def is_prime(num):
    if num < 2:
        raise ValueError("")
    if num == 2:
        return True
    if num % 2 == 0:
        return False 
    dividers = range(3, int(sqrt(num)),2)   
    for b in dividers:
        if num % b == 0:
            return False  
    return True
   
def prime_sum(numbers):       
    return [x for x in numbers if is_prime(x)]


if __name__ == "__main__":
    p = Pool(processes=4)
    results = p.map(prime_sum, [range(500000, 625000),
                                   range(625000, 750000),
                                   range(750000, 875000),
                                   range(875000, 1000000) ] )

    print(sub_sums)
    print(sum(sub_sums))
    print([x for x in sub_sums ])
    print(sum(sub_sums))

As output:
<map object at 0x10c685e80>
27670539145
[]
0