小言_互联网的博客

Python concurrent.futures ProcessPoolExecutor和ThreadPoolExecutor斐波拉切算法实例

304人阅读  评论(0)

原因:斐波拉切算法

ProcessPoolExecutor: 进程池map的用法

# coding=utf-8
import logging
from concurrent.futures import ProcessPoolExecutor
import time

logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s [*] %(processName)s  %(message)s"
)


def fib (n):
    if n < 3:
        return 1
    return fib(n - 1) + fib(n - 2)


if __name__ == '__main__':
    start = time.time()
    executor = ProcessPoolExecutor(max_workers=4)
    # 异步提交任务------------------------------------------------------------
    futures = executor.map(fib, range(3, 35))
    for future in futures:
        logging.info(future)
    
    executor.shutdown(True)
    logging.info(time.time() - start)

输出:

2019-10-07 21:08:19,147 [*] MainProcess  2
2019-10-07 21:08:19,149 [*] MainProcess  3
2019-10-07 21:08:19,150 [*] MainProcess  5
2019-10-07 21:08:19,153 [*] MainProcess  8
2019-10-07 21:08:19,153 [*] MainProcess  13
2019-10-07 21:08:19,161 [*] MainProcess  21
2019-10-07 21:08:19,161 [*] MainProcess  34
2019-10-07 21:08:19,161 [*] MainProcess  55
2019-10-07 21:08:19,162 [*] MainProcess  89
2019-10-07 21:08:19,162 [*] MainProcess  144
2019-10-07 21:08:19,162 [*] MainProcess  233
2019-10-07 21:08:19,162 [*] MainProcess  377
2019-10-07 21:08:19,162 [*] MainProcess  610
2019-10-07 21:08:19,162 [*] MainProcess  987
2019-10-07 21:08:19,162 [*] MainProcess  1597
2019-10-07 21:08:19,162 [*] MainProcess  2584
2019-10-07 21:08:19,162 [*] MainProcess  4181
2019-10-07 21:08:19,162 [*] MainProcess  6765
2019-10-07 21:08:19,162 [*] MainProcess  10946
2019-10-07 21:08:19,173 [*] MainProcess  17711
2019-10-07 21:08:19,173 [*] MainProcess  28657
2019-10-07 21:08:19,203 [*] MainProcess  46368
2019-10-07 21:08:19,207 [*] MainProcess  75025
2019-10-07 21:08:19,248 [*] MainProcess  121393
2019-10-07 21:08:19,293 [*] MainProcess  196418
2019-10-07 21:08:19,391 [*] MainProcess  317811
2019-10-07 21:08:19,573 [*] MainProcess  514229
2019-10-07 21:08:19,812 [*] MainProcess  832040
2019-10-07 21:08:20,164 [*] MainProcess  1346269
2019-10-07 21:08:20,639 [*] MainProcess  2178309
2019-10-07 21:08:21,261 [*] MainProcess  3524578
2019-10-07 21:08:21,890 [*] MainProcess  5702887
2019-10-07 21:08:21,954 [*] MainProcess  3.179666757583618

ThreadPoolExecutor:线程池 map的用法

# coding=utf-8
import logging
from concurrent.futures import ThreadPoolExecutor
import time

logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s [*]  %(threadName)s %(message)s"
)


def fib (n):
    if n < 3:
        return 1
    return fib(n - 1) + fib(n - 2)


if __name__ == '__main__':
    start = time.time()
    executor = ThreadPoolExecutor(max_workers=4)
    # 异步提交任务------------------------------------------------------------
    futures = executor.map(fib, range(3, 35))
    for future in futures:
        logging.info(future)
    
    executor.shutdown(True)
    logging.info(time.time() - start)

输出:

2019-10-07 21:12:15,525 [*]  MainThread 2
2019-10-07 21:12:15,525 [*]  MainThread 3
2019-10-07 21:12:15,525 [*]  MainThread 5
2019-10-07 21:12:15,525 [*]  MainThread 8
2019-10-07 21:12:15,610 [*]  MainThread 13
2019-10-07 21:12:15,641 [*]  MainThread 21
2019-10-07 21:12:15,641 [*]  MainThread 34
2019-10-07 21:12:15,641 [*]  MainThread 55
2019-10-07 21:12:15,642 [*]  MainThread 89
2019-10-07 21:12:15,642 [*]  MainThread 144
2019-10-07 21:12:15,642 [*]  MainThread 233
2019-10-07 21:12:15,642 [*]  MainThread 377
2019-10-07 21:12:15,642 [*]  MainThread 610
2019-10-07 21:12:15,642 [*]  MainThread 987
2019-10-07 21:12:15,642 [*]  MainThread 1597
2019-10-07 21:12:15,642 [*]  MainThread 2584
2019-10-07 21:12:15,642 [*]  MainThread 4181
2019-10-07 21:12:15,642 [*]  MainThread 6765
2019-10-07 21:12:15,642 [*]  MainThread 10946
2019-10-07 21:12:15,642 [*]  MainThread 17711
2019-10-07 21:12:15,643 [*]  MainThread 28657
2019-10-07 21:12:15,643 [*]  MainThread 46368
2019-10-07 21:12:15,643 [*]  MainThread 75025
2019-10-07 21:12:15,826 [*]  MainThread 121393
2019-10-07 21:12:15,826 [*]  MainThread 196418
2019-10-07 21:12:15,964 [*]  MainThread 317811
2019-10-07 21:12:16,249 [*]  MainThread 514229
2019-10-07 21:12:16,708 [*]  MainThread 832040
2019-10-07 21:12:16,992 [*]  MainThread 1346269
2019-10-07 21:12:18,253 [*]  MainThread 2178309
2019-10-07 21:12:18,979 [*]  MainThread 3524578
2019-10-07 21:12:19,611 [*]  MainThread 5702887
2019-10-07 21:12:19,611 [*]  MainThread 4.085493087768555

转载:https://blog.csdn.net/mixintu/article/details/102328562
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场