线程池:ThreadPoolExecutor

#!/usr/bin/env python
# -*- encoding: utf-8 -*-

from concurrent.futures import ThreadPoolExecutor as ConThreadPoolExecutor, as_completed
from loguru import logger


class Hello():

    def __init__(self):
        self.pool_num = 4

    def print_hello(self, num):

        for i in range(num):
            logger.info("{}-{}".format(i, "test" + str(i)))

        # i = 0
        # while i <= num:
        #     logger.info("{}-{}".format(i, "test" + str(i)))
        #     i+=1

    def start_run(self):
        tp = ConThreadPoolExecutor(max_workers=self.pool_num)
        tp.submit(self.print_hello, 100)
        tp.shutdown(wait=True)
        logger.info('end')

    def start_run2(self):
        tp = ConThreadPoolExecutor(max_workers=self.pool_num)
        nums = [2, 1, 3]
        all_task = [tp.submit(self.print_hello, num) for num in nums]

        for future in as_completed(all_task):
            data = future.result()
            print("in main: get page {}s success".format(data))

        logger.info('end')


if __name__ == '__main__':
    obj = Hello()
    obj.start_run()

  

 

posted @ 2021-05-25 13:19  Adamanter  阅读(41)  评论(0)    收藏  举报