python 多进程处理 multiprocessing模块

简介:

前提: 有时候一个用一个进程处理一个列表中的每个元素(每个元素要传递到一个函数中进行处理),这个时候就要用多进程处理



1 现场案例:


我有一个[ip1,ip2,ip3,.......]这样的列表,我要每个元素ip传递给一个get_ping_info(addr)函数得到返回延迟信息,然后将结果到一保存个result列表中,如果用一个单进程执行的话可能需要几分钟,但是如果多进程处理就可以缩减几倍的速度了


用法:(程序代码只截图了部分,不可运行)

1
pool.apply_async(函数名, (函数的参数 1 ,函数的参数 2 ,函数的参数 3 ))


1
import  multiprocessing
1
2
3
4
5
6
7
8
def  get_ping_info(create_time,prov,city,net_type,addr):
     result  =  ping.quiet_ping(addr, timeout = 2 , count = 5 , psize = 64 )
     loss_rate  =  result[ 0 ]
     max_time  =  float ( '%.3f' %  result[ 1 ])  if  isinstance (result[ 1 ],  float else  0
     #if max_time and average_time is None use 0
     average_time  =  float ( '%.3f' %  result[ 1 ])  if  isinstance (result[ 2 ],  float else  0
     print  create_time,prov,city,net_type,loss_rate, average_time
     return  (create_time,prov,city,net_type,loss_rate, average_time)



1
2
3
4
5
6
7
8
9
10
11
12
13
if  __name__  = =  "__main__" :
     all_city_result_tmp  =  []
     all_city_result  =  []
     create_time  =  datetime.now()
     city_list  =  get_city_list()
     pool  =  multiprocessing.Pool(processes = 4 )
     for  prov,city,addr  in  city_list:
         all_city_result_tmp.append(pool.apply_async(get_ping_info, (create_time,prov,city, 'CTC' ,addr )))
     pool.close()
     pool.join()
     for  city_info  in  all_city_result_tmp:
         #print city_info.get()
         all_city_result.append(city_info.get())

   


注意: 

1 all_city_result_tmp 只是多线程多线的列表,其中列表中的元素.get() 函数才会去执行元素对象,对象中有执行get_ping_info函数的信息和返回值

本文转自残剑博客51CTO博客,原文链接http://blog.51cto.com/cuidehua/1764707如需转载请自行联系原作者


cuizhiliang

相关文章
|
3月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
453 7
|
3月前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
304 0
|
3月前
|
JSON 算法 API
Python中的json模块:从基础到进阶的实用指南
本文深入解析Python内置json模块的使用,涵盖序列化与反序列化核心函数、参数配置、中文处理、自定义对象转换及异常处理,并介绍性能优化与第三方库扩展,助你高效实现JSON数据交互。(238字)
438 4
|
3月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
362 0
|
3月前
|
XML JSON 数据处理
超越JSON:Python结构化数据处理模块全解析
本文深入解析Python中12个核心数据处理模块,涵盖csv、pandas、pickle、shelve、struct、configparser、xml、numpy、array、sqlite3和msgpack,覆盖表格处理、序列化、配置管理、科学计算等六大场景,结合真实案例与决策树,助你高效应对各类数据挑战。(238字)
239 0
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
Python
python Process 多进程编程
python Process 多进程编程
189 1
|
调度 Python
python3多进程实战(python3经典编程案例)
该文章提供了Python3中使用多进程的实战案例,展示了如何通过Python的标准库`multiprocessing`来创建和管理进程,以实现并发任务的执行。
427 0
|
Python
Python多进程编程详细剖析
Python多进程编程详细剖析
115 3
|
安全 开发者 Python
Python中的多线程与多进程编程
Python作为一种广泛使用的编程语言,在处理并发性能时具有独特的优势。本文将深入探讨Python中的多线程与多进程编程技术,分析其原理和应用,帮助读者更好地理解并发编程在Python中的实现与优化。

推荐镜像

更多