版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CSDNgaoqingrui/article/details/80705928
import math import os import sys import time from concurrent.futures import ProcessPoolExecutor, wait import fire def each_task(n): s = 0.0 for i in range(n): s += 1.0 / (i+1)/(i+1) pi = math.sqrt(6*s) sys.stdout.write('process %s n=%d pi=%s \n' % (os.getpid(), n, pi)) return pi def run(process_num, *ns): executor = ProcessPoolExecutor(process_num) start = time.time() fs = [] for n in ns: fs.append(executor.submit(each_task, int(n))) wait(fs) end = time.time() duration = start - end print('total cost: %.2fs' % duration) executor.shutdown() if __name__ == '__main__': press = int(input('请输入进程数:')) thread = int(input('请输入线程数:')) fire.Fire(run(press, thread))