已知下面的程序是计算1~100000之间所有素数和的程序,已实现了单进程计算,但多进程计算暂未实现,请完成use_multi_process()函数的编写,使得整个程序运行正确,并观察开启2个进程和开启4个进程两种方法的时间差异。
第一种
def use_multi_process(count):
pool = multiprocessing.Pool(processes = count)
index_lst = list(range(1, 100002, 100000 // count))
index_lst[-1] = 100001
process_lst = [(index_lst[i], index_lst[i + 1]) for i in range(len(index_lst) - 1)]
res_lst = []
for i in process_lst:
res = pool.apply_async(get_prime, (i[0], i[1]))
res_lst.append(res)
pool.close()
pool.join()
return sum(i.get() for i in res_lst)
第二种(需要额外定义get_prime_)
def get_prime_(beg, end, q):
q.put(get_prime(beg, end))
def use_multi_process(count):
q = multiprocessing.Queue()
index_lst = list(range(1, 100002, 100000 // count))
index_lst[-1] = 100001
process_lst = [multiprocessing.Process(target = get_prime_, args = (index_lst[i], index_lst[i + 1], q)) for i in range(len(index_lst) - 1)]
for p in process_lst:
p.start()
for p in process_lst:
p.join()
return sum(q.get() for _ in range(len(process_lst)))
没人回答啊,你能把你现有的代码给贴一下吗?我实在是不想对着图片去抄代码了