我想在[0,M)中找到所有引物,并使用multiprocessing.pool.map方法编写它,但它输出了很多我不想要的。我的代码是这样的:
from multiprocessing import Pool
M = 100
vi = [0] * M
def do_sieve(p):
global vi
if p <= 1:
vi[p] = -1
return
for i in range(2*p, M, p):
vi[i] = 1
if vi[p] == 0:
return p
if __name__ == '__main__':
pool_size = 4
pool = Pool(processes = pool_size)
result = pool.map(do_sieve, range(0, M), 50)
print result
输出如下:
[无,无,2,3,无,5,无,7,无,无,......]
我知道这是因为如果p不是引物, do_sieve 将直接返回,所以我希望结果只包含所有引物。任何人都可以帮我改进吗?
答案 0 :(得分:1)
最后再添加一行来过滤掉None
s:
result = [i for i in result if i is not None]