python 线程池 futures使用
roney 2018-05-17 11:26:08 浏览205 评论0- python
- 函数
- 线程
- 测试
- list
- thread
摘要: python 线程池 例一# 首先导包 from concurrent.futures import ThreadPoolExecutor # 创建线程池 executor = ThreadPoolExecutor(10) # 测试方法 def test_function(num1, n...
python 线程池
- 例一
# 首先导包
from concurrent.futures import ThreadPoolExecutor
# 创建线程池
executor = ThreadPoolExecutor(10)
# 测试方法
def test_function(num1, num2):
print(num1, num2)
return num1 + num2
# 第一个参数为具体的方法,后面为方法的参数
future = executor.submit(test_function, 1, 2)
# future的result()方法可以获取到函数的执行结果
print(future.result())
ThreadPoolExecutor(pool_count): pool_count代表创建线程的数量,会返回一个该线程池的执行者对象,这个对象的submit()方法和map()方法,能够使用线程池中的线程来执行我们指定的方法,并且返回一个Future对象。Future对象的result()方法,可以获取我们方法执行的结果。如果方法一直没有返回或执行完毕,则result()方法会进入阻塞状态,直到我们的方法返回或执行完毕。
- 例二
from concurrent.futures import ThreadPoolExecutor
executor = ThreadPoolExecutor(10)
def test_function(num1, num2):
print(num1, num2)
return num1 + num2
result_iterators = executor.map(test_function, [1, 2], [5, 5])
for result in result_iterators:
print(result)
"""
executor.map(function, 参数1_list, 参数2_list, 参数n_list)
参数1_list: 代表方法第一个参数的列表
参数2_list: 代表方法第二个参数的列表
如: executor.map(test_function, [1, 2], [5, 5]) 代表,执行test_function方法,第一个线程的参数为1和5,第二个线程的参数为2和5。 线程1:test_function(1,
5) 结果为1 + 5 = 6 该方法返回的是一个可迭代的对象,里面直接包含了每个方法执行的结果,不需要调用result()方法。 详情:docs.python.org/3/library/c…
"""
结果
1 5
2 5
6
7
用云栖社区APP,舒服~
【云栖快讯】诚邀你用自己的技术能力来用心回答每一个问题,通过回答传承技术知识、经验、心得,问答专家期待你加入! 详情请点击- 分享到: