concurrent.futures

Posted 我是外婆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了concurrent.futures相关的知识,希望对你有一定的参考价值。

# _*_coding:utf-8_*_
# author:leo
# date:
# email:[email protected]
from concurrent.futures import *
from urllib import request
import time
import random

tasks = []
def test(val):
    rand = random.randint(1, 10)
    print(‘任务开始 delay: ‘, rand)
    time.sleep(rand) # 模拟耗时
    return ‘result: ‘ + str(val)

# 初始化线程池
pool = ThreadPoolExecutor(max_workers=5)
tasks = [pool.submit(test, x) for x in range(1, 10)]
#print(t.cancel()) # 尝试取消一个任务 成功True 失败Flase
# try:
#     for t in as_completed(tasks, 10):
#         print(t, ‘status: ‘, t.done(), ‘result: ‘, t.result())
# except TimeoutError as e:
#         print(‘can`t finish in time‘)
#
wait(tasks) #阻塞任务全部完成
for t in tasks:  #查看所有任务状态
    print(t.done())
# for t in tasks:
#     print(t.running()) # 判断任务状态
#
# #wait() #传入可迭代对象,阻塞所有任务
# for t in tasks:
#     print(t.done()) # 任务是否完成
# for t in tasks:
#     print(t.result()) #阻塞的方式获取任务的结果 可以设置timeout 超时时间
#

  

以上是关于concurrent.futures的主要内容,如果未能解决你的问题,请参考以下文章

无法将动态类与 concurrent.futures.ProcessPoolExecutor 一起使用

python并发之concurrent.futures

使用concurrent.futures模块并发,实现进程池线程池

在 python 的 concurrent.futures 中查找 BrokenProcessPool 的原因

Python concurrent.futures.ProcessPoolExecutor:用于大量任务的大量 RAM

来自 concurrent.futures 的 ProcessPoolExecutor 比 multiprocessing.Pool 慢