import time
from threading import Thread
defcount(x):
time.sleep(x)
start = time.time()
jobs =[]for i inrange(5):
t = Thread(target=count, args=(i,))
jobs.append(t)
t.start()for i in jobs:
i.join()print("用时:", time.time()- start)
2. ThreadPoolExecutor创建进程池
from concurrent.futures import ThreadPoolExecutor
import time
# 构造线程池实例,传入max_workers可以设置线程池中最多能同时运行的线程数目
pool = ThreadPoolExecutor(max_workers=2)deftask(i):print('线程名称:%s'% i)
time.sleep(2)# 定义睡眠时间for i inrange(5):# 创建十个任务# submit() 提交线程需要执行的任务(函数名和参数)到线程池中,立刻返回一个future对象。
future1 = pool.submit(task, i)# 取task的执行结果print(future1.result())# 取消该 Future 代表的线程任务。如果该任务正在执行,不可取消,则该方法返回 False;否则,程序会取消该任务,并返回 True。print(future1.cancel())# 返回 Future 代表的线程任务是否被成功取消。print(future1.cancelled())print(future1.running())
as_completed()
from concurrent.futures import ThreadPoolExecutor, as_completed
import time
import random
import threading
# 构造线程池实例,传入max_workers可以设置线程池中最多能同时运行的线程数目
pool = ThreadPoolExecutor(max_workers=2)# def task(i):# print('线程名称:%s' % i)# time.sleep(2) # 定义睡眠时间deftask(i):
sleep_seconds = random.randint(1,3)# 随机睡眠时间print('线程名称:%s,参数:%s,睡眠时间:%s'%(threading.current_thread().name, i, sleep_seconds))
time.sleep(sleep_seconds)# 定义睡眠时间
all_task =[pool.submit(task, i)for i inrange(5)]for future in as_completed(all_task):
data = future.result()print(data)
map()
from concurrent.futures import ThreadPoolExecutor, as_completed
import time
import random
import threading
# 构造线程池实例,传入max_workers可以设置线程池中最多能同时运行的线程数目
pool = ThreadPoolExecutor(max_workers=2)# def task(i):# print('线程名称:%s' % i)# time.sleep(2) # 定义睡眠时间deftask(i):
sleep_seconds = random.randint(1,3)# 随机睡眠时间print('线程名称:%s,参数:%s,睡眠时间:%s'%(threading.current_thread().name, i, sleep_seconds))
time.sleep(sleep_seconds)# 定义睡眠时间# 向线程池提交5个任务
x =range(5)for i in pool.map(task, x):print('successful')