进程与线程-运行时间算法2

版权声明:本文为博主原创文章,未经博主允许不得转载。 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))



猜你喜欢

转载自blog.csdn.net/CSDNgaoqingrui/article/details/80705928