线程池 -ThreadPoolExecutor

同样一个进程中不可能无限开辟线程,于是就有了线程池,线程池的作用与进程池相似,是规定了开辟最大线程数。

开启线程池的方法

开辟线程池的方法与开辟进程池相似,是由concurrent.futurse 导入ThreadPoolExecutor类

from concurrent.futures import ThreadPoolExecutor
import time,os,random
def piao(name,n):
    print("%s is piaoing %s"%(name,os.getpid())) # 打印了进程id
    time.sleep(random.randint(1,3))

if __name__ == "__main__":
    p = ThreadPoolExecutor(4) # 指定线程池最大线程个数,不包含控制线程
    for i in range(10):
        obj = p.submit(piao,"alex %s"%i,i) # 提交线程
    print("")
#是不是和开启子进程方法一模一样,只是名字不同

#执行结果就像之前说的那样,开启线程要比开启进程快的多,所以控制线程的结果在子线程之后打印出来
#执行结果
#alex 0 is piaoing 8764
#alex 1 is piaoing 8764
#alex 2 is piaoing 8764
#alex 3 is piaoing 8764
#

#alex 4 is piaoing 8764
#alex 5 is piaoing 8764
#alex 6 is piaoing 8764
#alex 7 is piaoing 8764

#alex 8 is piaoing 8764

#alex 9 is piaoing 8764

 

posted @ 2017-12-01 20:09  瓜田月夜  阅读(91)  评论(0)    收藏  举报