Python之线程池

# concurrent.futures模块
# ThreadPoolExecutor:线程池
# ProcessPoolExecutor:进程池

# 线程池使用案例
# from concurrent.futures import ThreadPoolExecutor
# import time
#
# def func(n):
#     time.sleep(1)
#     print('任务',n)
#
# if __name__ == '__main__':
#     # 线程池线程数默认不要超过cpu个数乘以5
#     t = ThreadPoolExecutor(max_workers=5)
#     for i in range(50):
#         # submit提交开启线程,第一个参数是函数名,后面为函数参数
#         t.submit(func,i)
#     t.shutdown() # 相当于t.close和t.join

# 获取返回值
# from concurrent.futures import ThreadPoolExecutor
# import time
#
# def func(n):
#     time.sleep(1)
#     print('任务',n)
#     return ('返回值',n*2)
#
# if __name__ == '__main__':
#     # 线程池线程数默认不要超过cpu个数乘以5
#     t = ThreadPoolExecutor(max_workers=5)
#     ret_lst = []
#     for i in range(20):
#         # submit提交开启线程,第一个参数是函数名,后面为函数参数
#         ret = t.submit(func,i)
#         ret_lst.append(ret)
#     # t.shutdown() # 相当于t.close和t.join
#     for ret in ret_lst:print(ret.result())
'''
任务 0
('返回值', 0)
任务 4
任务 1
任务 3
任务 2
('返回值', 2)
('返回值', 4)
('返回值', 6)
('返回值', 8)
任务 5
('返回值', 10)
任务 9
任务 8
任务 6
('返回值', 12)
任务 7
('返回值', 14)
('返回值', 16)
('返回值', 18)
任务 10
('返回值', 20)
任务 14
任务 12
任务 13
任务 11
('返回值', 22)
('返回值', 24)
('返回值', 26)
('返回值', 28)
任务 15
('返回值', 30)
任务 17
任务 16
('返回值', 32)
('返回值', 34)
任务 19
任务 18
('返回值', 36)
('返回值', 38)
'''

# 回调函数
# from concurrent.futures import ThreadPoolExecutor
# import time
#
# def func(n):
#     time.sleep(1)
#     print('任务',n)
#     return ('返回值',n*2)
#
# def callBack(m):
#     print(m.result())
#
# if __name__ == '__main__':
#     # 线程池线程数默认不要超过cpu个数乘以5
#     t = ThreadPoolExecutor(max_workers=5)
#     ret_lst = []
#     for i in range(20):
#         # submit提交开启线程,第一个参数是函数名,后面为函数参数
#         ret = t.submit(func,i).add_done_callback(callBack)
#         # ret_lst.append(ret)
#     # t.shutdown() # 相当于t.close和t.join

# 进程池使用与线程池相似
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python异步线程池是一种用于处理并发任务的机制,它可以在执行任务时提高效率和性能。异步线程池允许同时执行多个任务,并且可以在任务之间进行切换,从而避免了阻塞等待的情况。 在Python中,异步线程池通常使用`concurrent.futures`模块中的`ThreadPoolExecutor`类来实现。`ThreadPoolExecutor`提供了一种简单的方式来创建和管理线程池,并且可以方便地提交任务和获取任务的结果。 以下是使用Python异步线程池的一般步骤: 1. 导入`concurrent.futures`模块。 2. 创建一个`ThreadPoolExecutor`对象,指定线程池的大小。 3. 使用`submit()`方法提交任务到线程池中,该方法返回一个`Future`对象,表示任务的未来结果。 4. 使用`result()`方法获取任务的结果,该方法会阻塞直到任务完成并返回结果。 5. 使用`shutdown()`方法关闭线程池。 下面是一个简单的示例代码,演示了如何使用Python异步线程池: ```python import concurrent.futures # 定义一个任务函数 def task(n): return n * n # 创建一个线程池 with concurrent.futures.ThreadPoolExecutor() as executor: # 提交任务到线程池 future = executor.submit(task, 5) # 获取任务的结果 result = future.result() print(result) ``` 这个示例中,我们定义了一个简单的任务函数`task()`,它接受一个参数并返回参数的平方。然后,我们使用`ThreadPoolExecutor`创建了一个线程池,并使用`submit()`方法提交了一个任务到线程池中。最后,我们使用`result()`方法获取任务的结果并打印出来。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值