当前位置:首页 > 生活百科

python高性能编程怎么样(Python编程从入门到实践)

栏目:生活百科日期:2025-04-18浏览:0

一、选择操作系统

高性能多任务编程需要选择合适的操作系统。因为windows下创建子进程是通过重新加载py程序文件;而linux和mac创建子进程是通过复制父进程的内存空间,所以在windows平台下运行多进程python程序的效率远不如在linux和mac平台下运行。要追求高性能多任务运行python程序的,推荐使用linux或mac操作系统。

二、分析任务类型

高性能多任务编程有三种方式:

多进程,追求高运算:

任务类型:计算多IO少时,建议使用进程池的方式来编程。进程池中进程的数量一般推荐为CPU内核数的一至两倍。多进程程序运行时是并行执行。

常见任务:科学计算、数据分析等。

注意:创建进程开销极大,进程之间数据隔离,多进程存在数据不安全的情况,可规避所有IO。

多线程,运用最多:

任务类型:IO多计算少时,建议使用线程池的方式来编程。线程池中线程的数量一般推荐为CPU内核数的四到五倍,至多不超过十倍。多线程程序运行时是并发执行(由于GIL锁造成python多线程执行时不能并行执行)。

常见任务:爬虫等。

注意:创建线程开销小,线程之间数据共享,多线程存在数据不安全的情况,可规避所有IO。

协程,追求高并发:

任务类型:IO多计算少且需要大幅度提高并发数时,建议使用协程或多进程+多线程+协程的方式。

常见任务:爬虫、网络服务、web服务器等。

注意:创建协程开销极小,线程之间数据共享,多线程不存在数据不安全的情况,但只能规避部分IO。

三、Python解释器类型

目前大家用得最多的是CPython,它是用C语言实现的Python解释器,也是官方的并且是使用最广泛的Python解释器,它的软件包和兼容性最佳,CPython最新版本是3.9.1。官网是https://www.python.org/ 。

如果要追求高性能的话目前值得推荐的解释器是PyPy,PyPy提供了JIT编译器和沙盒功能,因此运行速度比CPython要快,它的软件包和兼容性不如CPython,Pypy最新版本是3.7。官网是https://www.pypy.org/ 。

四、注意事项

高性能多任务编程使用线程池的方式最多,要注意python线程编程的一个缺陷,即不能在线程外部关闭超时的线程。所以需要在任务内部对超时情况做处理。下面写一个简单的模拟爬虫案例:

代码:

from concurrent.futures import ThreadPoolExecutorimport requestsurl = &[('csdn', 'https://www.csdn.net/'), ('cnblogs', 'https://www.cnblogs.com/'),       ('baidu', 'https://www.baidu.com/'), ('toutiao', 'https://www.toutiao.com/'),       ('google', 'https://www.google.com/')]def get(site):    try:        r = requests.get(site&[1], timeout=5)  # 设置超时时限为5秒    except requests.exceptions.ConnectTimeout:        return site&[0], '超时'    return site&[0], '正常'if __name__ == "__main__":    p_list = &[]    with ThreadPoolExecutor(max_workers=5) as e:        ret = e.map(get, url)    for i in ret:        print(f'网站“{i&[0]}”下载情况是“{i&[1]}”')

输出:

网站“csdn”下载情况是“正常”网站“cnblogs”下载情况是“正常”网站“baidu”下载情况是“正常”网站“toutiao”下载情况是“正常”网站“google”下载情况是“超时”

说明:

我们需要多任务执行的是get函数,它用来下载网页。在get中要对io操作进行超时预判,即超过5秒获取不到结果的网站放弃爬取。假设不设超时预判会导致线程一直反复爬取但一直获取不到数据而陷入死循环,极其影响整体影响效率。

总结:

因为python多线程无法从外部结束超时的线程,所以在多任务编程中要在函数内部对可能存在异常的任务做超时判断及处理。

“python高性能编程怎么样(Python编程从入门到实践)” 的相关文章

vmware workstation 6.5.2安装详细(vmware版本对比)

介绍及用处VMwareWorkstation虚拟机软件特性VMware虚拟机是一款通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统...

写保护的u盘如何格式化,解除u盘写保护的方法

如何取消U盘写保护方法1:格式化U盘1。检查U盘上是否有写保护按钮。一般来说,这是一个小的锁痕。拨号以取消U盘的写保护。2。如果保护开关未写入U盘,请先备份U盘...

南方航空网上值机怎么弄(网上值机操作教程)

亲爱的旅客,欢迎您在出行的旅途中体验昆明长水国际机场近日推出的“长水机场小程序”。当您进出航站楼时,在值机、托运行李、登机、中转、预约服务、用餐和购物过程中,使...

什么是产品运营要做什么(观文秒懂产品运营定义)

从事运营多年,先后经历了社区产品、电商产品和教育类产品的运营,最大的感觉就是做的工作很繁杂,当别人问起“你是做什么的”时,我的回答会是具体的一些工作内容,而很难...

天猫精灵能干什么,天猫精灵所有功能介绍

天猫精灵,你是谁?:我是天猫精灵,一个能帮你买东西、放音乐、充话费、查快递、控制家电、成语解释和陪你聊天娱乐等,拥有多种功能的智能语音助手!天猫精灵:给大家详细...

声卡价格一般多少(创新AE-9声卡最新报价及测评)

声卡对于大部分的用户来说可能都是了解不多的,我认为那么一款优秀的声卡可以成为你除了耳机之外第二个用来提升音频体验的产品了。就好像我们今年评选出的年度卓越旗舰声...

2023实体店前景项目有哪些(推荐适合女人9个小生意)

现在“金钱为上”甚上尘嚣,人们也对暴利、无本生意、挣大钱以及来钱快等字眼十分看重。今天小编就来分享9个不起眼的暴利小生意,希望对大家有所启发。在分享9个不起眼的...

java基础入门培训教程(java入门到精通知识)

如何基于零基础快速学习Java?学习Java技术,可以选择自学Java或者参加Java培训,无论什么样的学习方法,我们都需要努力认真学习。自学Java最容易犯的...

404错误页面怎么解决(手机404页面恢复方法)

曾几何时,当你输入错误链接时,很多网站都会显示幽默的图片或短语来提醒你该网页不存在,但这样的日子已经一去不复返了。在一个新的互联网时代,GIF就是新的文字,而视...

充电宝能带上飞机吗,第一次坐飞机详细流程

图、2014年8月7日,中国民航局发布“关于民航旅客携带充电宝乘机规定的公告”充电宝容量小于20000毫安时(mAh),而且电压小于5V。在满足上一个条件的前提...