# -*- 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()
concurrent.futures中ThreadPoolExecutor使用
最新推荐文章于 2024-04-05 10:30:24 发布