python2中多进程库multiprocessing.pool.ThreadPool.Pool使用

  • apply_asyncPool 对象的一个方法,用于异步地(非阻塞地)将任务提交到进程池中执行。

  • 它的作用是:

    • 将任务分配给进程池中的一个空闲进程。
    • 立即返回一个 AsyncResult 对象,而不等待任务完成。
    • 任务会在后台的某个进程中执行。

补充说明:

  • 异步执行apply_async 是非阻塞的,提交任务后会立即返回,不会等待任务完成。如果需要等待任务完成并获取结果,可以调用返回的 AsyncResult 对象的 get() 方法。
  • 进程池的优势:使用进程池可以避免频繁创建和销毁

代码如下,

py 复制代码
# -*- coding: utf-8 -*-
import os 
import sys 
import time 
from multiprocessing.pool import ThreadPool as Pool

def func1(i):
    time.sleep(0.5)
    res = i + 1
    return res 

if __name__ == "__main__":
    p = Pool(20)
    tasks = []
    for i in range(100):
        task = p.apply_async(func1, (i,))
        tasks.append(task) 
    p.close()
    p.join()
    print("tasks size: {}".format(len(tasks))) 
    
    results = []
    for task in tasks:
        result = task.get()
        results.append(result)
    print("results size: {}".format(len(results))) 
    print(results) 

    print("success!")
相关推荐
Chiy15 分钟前
架构设计避坑指南:读写分离后,分表分库到底该何时用?
后端
张志鹏PHP全栈41 分钟前
Rust第四天,Rust中常见编程概念
后端·rust
小璐乱撞42 分钟前
超越传统 RAG:GraphRAG 全流程解析与实战指南
人工智能·后端
JuiceFS1 小时前
JuiceFS writeback:写加速机制与适用场景解析
后端·云原生·云计算
小蒜学长1 小时前
基于实例教学的软件工程专业教学系统
java·spring boot·后端·软件工程
Code_Artist1 小时前
[Java并发编程]3.同步锁的原理
java·后端·面试
马里嗷1 小时前
Go 1.25 标准库更新
后端·go·github
K神1 小时前
Spring Cloud Gateway+Redis+Nacos之动态路由和负载均衡
后端·微服务
天天摸鱼的java工程师1 小时前
如何实现数据实时同步到 ES?八年 Java 开发的实战方案(从业务到代码)
java·后端·面试
hui函数1 小时前
Flask蓝图:模块化开发的利器
后端·python·flask