多线程一例

from concurrent.futures import ThreadPoolExecutor  # 导入线程池
from threading import current_thread  # 从线程中导入查看当前线程的方法
import time,random

pool = ThreadPoolExecutor(2)


def task(i):
    a = random.randint(0,5)
    time.sleep(a)
    print("2222working...")
    return i ** i
objs = []
for i in range(1,10):
    res_obj = pool.submit(task,i) # 异步方式提交任务,会返回一个对象用于表示任务结果,即pool.submit()会生成对象
    objs.append(res_obj)

# pool.shutdown(wait=True)  # shutdown是一个阻塞函数,
# 指的是不能再往进程池内提交任务,wait=True等待进程池或线程池内所有的任务都运行完毕,
# 才允许代码往下继续执行。

# 从结果对象中取出执行结果
for res_obj in objs:  # 从列表中拿出对象
    print(res_obj.result()) # 由submit得到的对象会有result()方法,即对象内封装的返回值
print(len(objs))
print("over")

  

posted @ 2019-12-20 00:44  real-admin  阅读(117)  评论(0编辑  收藏  举报