concurrent.futures中ThreadPoolExecutor使用

# -*- coding: utf-8 -*-

import time
from concurrent.futures import ThreadPoolExecutor, wait, ALL_COMPLETED, as_completed


def sleep_task(sleep_time):
    print('sleep time:{} s'.format(sleep_time))
    time.sleep(sleep_time)
    print('end')
    return '完成'


executor = ThreadPoolExecutor(max_workers=2)  # 设置max_workers线程池中的线程数
task1 = executor.submit(sleep_task, 2)  # submit 开始进程
print(task1.done())  # done 查看线程是否完成
time.sleep(3)
print(task1.done())  # done 查看线程是否完成
cancel_status = task1.cancel()  # cancel 取消线程,已运行的线程无法取消
print(cancel_status)

executor = ThreadPoolExecutor(max_workers=2)  # 设置max_workers线程池中的线程数
task1 = executor.submit(sleep_task, 2)  # submit 开始进程
task2 = executor.submit(sleep_task, 3)  # submit 开始进程
task3 = executor.submit(sleep_task, 3)  # submit 开始进程
# cancel 取消线程,已运行的线程无法取消
print(task1.cancel())
print(task2.cancel())
print(task3.cancel())

executor = ThreadPoolExecutor(max_workers=2)  # 设置max_workers线程池中的线程数
task1 = executor.submit(sleep_task, 2)  # submit 开始进程
task2 = executor.submit(sleep_task, 3)  # submit 开始进程
task3 = executor.submit(sleep_task, 3)  # submit 开始进程
# wait 当所有的线程运行完毕后关闭主线程, return_when 返回的时间
wait([task1, task2, task3], return_when=ALL_COMPLETED)
print('main end')

executor = ThreadPoolExecutor(max_workers=2)  # 设置max_workers线程池中的线程数
task1 = executor.submit(sleep_task, 2)  # submit 开始进程
task2 = executor.submit(sleep_task, 3)  # submit 开始进程
task3 = executor.submit(sleep_task, 3)  # submit 开始进程
task_list = [task1, task2, task3]
# as_completed 当某个线程完成后返回告知信息
for task in as_completed(task_list):
    print(task)
    print(task.result())  # result 线程完成后返回的数据
print('main end')# 添加守护线程
from threading import Thread
def sleep_task(sleep_time):
    print('sleep time:{} s'.format(sleep_time))
    time.sleep(sleep_time)
    print('end')
    return '完成'

t1 = Thread(target=sleep_task, args=(3,))
t1.setDaemon(Ture)  # 设置守护进程,主线程结束时子线程直接结束
t1.start()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值