python中线程池的使用

命运对每个人都是一样的,不一样的是各自的努力和付出不同,付出的越多,努力的越多,得到的回报也越多,在你累的时候请看一下身边比你成功却还比你更努力的人,这样,你就会更有动力。

导读:本篇文章讲解 python中线程池的使用,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

        线程池的基类是 concurrent.futures 模块中的 Executor,Executor 提供了两个子类,即 ThreadPoolExecutor 和 ProcessPoolExecutor,其中 ThreadPoolExecutor 用于创建线程池,而 ProcessPoolExecutor 用于创建进程池。

示例代码1:   【使用map方法】

from concurrent.futures import ThreadPoolExecutor, TimeoutError
import time


def tasks(num):
    count = 0
    for i in range(num):
        count += i
        time.sleep(0.1)
    return f"total:{count}"


# 创建一个包含4个线程的线程池,使用map函数
def thread_pool_run():
    with ThreadPoolExecutor(max_workers=4) as pool:
        # 后面元组有3个元素,因此程序启动3条线程来执行tasks函数
        results = pool.map(tasks, [10, 20, 30])
        for i in results:
            print(i)


if __name__ == '__main__':
    thread_pool_run()

运行结果:

python中线程池的使用

示例代码2:

from concurrent.futures import ThreadPoolExecutor, TimeoutError
import time


def tasks(num):
    count = 0
    for i in range(num):
        count += i
        time.sleep(0.1)
    return f"total:{count}"


# 创建一个包含4个线程的线程池,使用map函数
def thread_pool_run():
    with ThreadPoolExecutor(max_workers=4) as pool:
        # 后面元组有3个元素,因此程序启动3条线程来执行tasks函数
        results = pool.map(tasks, [10, 20, 30])
        for i in results:
            print(i)


# 设置线程超时
def thread_pool_set_timeout():
    futures = []
    with ThreadPoolExecutor(max_workers=4) as pool:
        for i in (10, 20, 30, 40, 50):
            future = pool.submit(tasks, i)
            futures.append([i, future])
        for future in futures:
            try:
                res = future[1].result(timeout=2)
                print(res)
            except TimeoutError:
                print(future[0], ': is timeout!')


if __name__ == '__main__':
    # thread_pool_run()
    thread_pool_set_timeout()

运行结果:

python中线程池的使用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/142763.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!