头歌python:多进程和多线程
第1关:使用进程池统计指定范围内的素数个数
本关任务:编写程序,使用进程池统计指定范围内的素数个数。
平台会对你编写的代码进行测试:
测试输入: 2000 预期输出: 303
测试输入: 5000 预期输出: 669
import multiprocessing
import math
def is_prime(m):
"""
判断一个数m是不是素数
:param m: 正整数
"""
# 请在此处添加代码 #
# *************begin************#
if m<=1:
return False
for j in range(2,int(math.sqrt(m))+1):
if m%j==0:
return False
return True
# **************end*************#
def main(n):
"""
判断0~n之间素数的个数
:param m: 正整数
"""
# 请在此处添加代码 #
# *************begin************#
pools=multiprocessing.Pool(5)
print(sum(pools.map(is_prime,range(n))))
# **************end*************#
if __name__ == '__main__':
n = int(input())
main(n)
第2关:使用ProcessPoolExecutor统计指定范围内的素数个数
本关任务:编写程序,使用ProcessPoolExecutor并发统计指定范围内的素数个数
编程要求
根据提示,在右侧编辑器补充代码,输出指定范围内素数个数。
测试说明
平台会对你编写的代码进行测试:
测试输入: 2000 预期输出: 303
测试输入: 5000 预期输出: 669
import concurrent.futures
import math
def is_prime(m):
"""
判断一个数m是不是素数
:param m: 正整数
"""
# 请在此处添加代码 #
# *************begin************#
if m<=1:
return False
for j in range(2,int(math.sqrt(m))+1):
if m%j==0:
return False
return True
# **************end*************#
def main(n):
"""
判断0~n之间素数的个数
:param m: 正整数
"""
# 请在此处添加代码 #
# *************begin************#
with concurrent.futures.ProcessPoolExecutor() as pool:
print(sum(pool.map(is_prime,range(n))))
# **************end*************#
if __name__ == '__main__':
n = int(input())
main(n)