您的位置:首页 > 编程语言 > Python开发

Python线程池编程和参数的传递

2018-02-06 21:36 363 查看
from time import sleep

import threadpool

def eat(a,b,c):
print("%s请%s吃%s"%(a,b,c))
sleep(2)

"""
线程中的传参形式
[(args,kwargs),(args,kwargs)]

"""

if __name__ == '__main__':

#线程1
# value1 = (1,2,3)
# 线程2
# value2 = (4,5,6)
# #线程3
# value3 = (7,8,9)
value1 = {"c":"坚果","b":"haha","a":"hehe"}
value2 = {"c":"葡萄","b":"xixi","a":"xixi"}
value3 = {"c":"苹果","b":"hhee","a":"xixi"}

#创建一个线程池
#参数用来设置线程池中可以同时运行线程的数量
thPool = threadpool.ThreadPool(2)

# argslist = ["haha","hehe","xixi","yaya","安倍狗"]

#用args形式给线程传参的(args,kwargs),因为没有kwargs形式的参数,所以
#第二个为None
# argslist = [(value1,None),(value2,None),(value3,None)]

#kwargs形式给线程传参
#因为没有args形式的参数,所以第一个为None
argslist = [(None, value1), (None,value2), (None,value3)]
#把每个线程当作一个请求,makesRequests将每个线程创建成一个请求
threadRequests = threadpool.makeRequests(eat,argslist)

#将线程池中的每个线程请求放到线程池中
for request in threadRequests:
thPool.putRequest(request)
#开启,启动线程池
#wait会等待所有的子线程执行完后再执行wait()后面的代码
thPool.wait()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: