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()
|