python 线程池 futures使用

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()方法。 详情:https://docs.python.org/3/library/concurrent.futures.html
"""

结果

1 5
2 5
6
7

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值