50 lines
1.1 KiB
Python
50 lines
1.1 KiB
Python
|
"""
|
|||
|
用下面的命令运行程序并查看执行时间,例如:
|
|||
|
time python3 example05.py
|
|||
|
real 0m20.657s
|
|||
|
user 1m17.749s
|
|||
|
sys 0m0.158s
|
|||
|
使用多进程后实际执行时间为20.657秒,而用户时间1分17.749秒约为实际执行时间的4倍
|
|||
|
这就证明我们的程序通过多进程使用了CPU的多核特性,而且这台计算机配置了4核的CPU
|
|||
|
"""
|
|||
|
import concurrent.futures
|
|||
|
import math
|
|||
|
|
|||
|
PRIMES = [
|
|||
|
1116281,
|
|||
|
1297337,
|
|||
|
104395303,
|
|||
|
472882027,
|
|||
|
533000389,
|
|||
|
817504243,
|
|||
|
982451653,
|
|||
|
112272535095293,
|
|||
|
112582705942171,
|
|||
|
112272535095293,
|
|||
|
115280095190773,
|
|||
|
115797848077099,
|
|||
|
1099726899285419
|
|||
|
] * 5
|
|||
|
|
|||
|
|
|||
|
def is_prime(num):
|
|||
|
"""判断素数"""
|
|||
|
assert num > 0
|
|||
|
if num % 2 == 0:
|
|||
|
return False
|
|||
|
for i in range(3, int(math.sqrt(num)) + 1, 2):
|
|||
|
if num % i == 0:
|
|||
|
return False
|
|||
|
return num != 1
|
|||
|
|
|||
|
|
|||
|
def main():
|
|||
|
"""主函数"""
|
|||
|
with concurrent.futures.ProcessPoolExecutor() as executor:
|
|||
|
for number, prime in zip(PRIMES, executor.map(is_prime, PRIMES)):
|
|||
|
print('%d is prime: %s' % (number, prime))
|
|||
|
|
|||
|
|
|||
|
if __name__ == '__main__':
|
|||
|
main()
|