python运行慢的原因(python运行太快)
请问大佬们,为什么我python运行程序特别慢啊,我这个程序怎么改一下可以运行的更快呢?
您好,茫茫人海之中,能为君排忧解难实属朕的荣幸,在下拙见,若有错误,还望见谅!。展开全部
yxhtest7772017-07-18
关注
?分享
? 697 ? 2
python运行速度慢怎么办?6个Python性能优化技巧
?
Python是一门非常酷的语言,因为很少的Python代码可以在短时间内做很多事情,并且,Python很容易就能支持多任务和多重处理。
Python的批评者声称Python性能低效、执行缓慢,但实际上并非如此:尝试以下6个小技巧,可以加快Python应用程序。
关键代码可以依赖于扩展包
Python使许多编程任务变得简单,但是对于很关键的任务并不总是提供最好的性能。使用C、C++或者机器语言扩展包来执行关键任务能极大改善性能。这些包是依赖于平台的,也就是说,你必须使用特定的、与你使用的平台相关的包。简而言之,该解决方案提供了一些应用程序的可移植性,以换取性能,您可以获得只有通过直接向底层主机编程。
下面这些扩展包你可以考虑添加到你的个人扩展库中:
Cython
PyInlne
PyPy
Pyrex
这些包有不同的作用和执行方式。例如,Pyrex 让Python处理一些内存任务变得简单高效;PyInline可以直接让你在Python应用程序中使用C代码,虽然内联代码被单独编译,但是如果你能高效的利用C代码,它可以在同一个地方处理每一件事情。
使用关键字排序
有很多古老的Python代码在执行时将花费额外的时间去创建一个自定义的排序函数。最好的排序方式是使用关键字和默认的sort()方法。
优化循环
每一种编程语言都强调循环语句的优化,Python也是一样的。尽管你可以依赖于丰富的技术让循环运行的更快,然而,开发者经常忽略的一个方法是避免在循环内部使用点拼接字符串。
使用新版本
任何一个在线上搜索Python资料的人都会发现无数关于Python版本迁移的信息。通常,Python每一个版本都针对之前的一个版本做了优化和改进,以让Python运行的更快。限制因素是你喜欢的函数库是否也针对Python的新版本做了改进。
当你使用了新的函数库,获得了Python的新版本,你需要保证代码依然能够运行,检查应用,修正差异。然后,如果你仅仅是非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!
python 处理大数据程序运行的越来越慢的问题
最近编写并运行了一个处理1500万个数据的程序,本来最初每秒可以处理150个左右的数据,预计大概15个小时的时间就可以处理完,晚上的时候就开始运行,本以为等到第二天中午就可以得到结果呢,,,
可是,等我第二天的时候一看,什么???还没处理完,当前的数据处理速度变成了一秒5个左右,然后还需要等待300个小时。
然后就查了一下这个问题,原来同样也有很多人在处理大数据的时候遇到了这个问题,大多数的文章分析的原因都是说由于GC(垃圾回收)造成的性能下降。
Python的垃圾回收机制的工作原理为每个对象维护一个引用计数,每次内存对象的创建与销毁都必须修改引用计数,从而在大量的对象创建时,需要大量的执行修改引用计数操作,对于程序执行过程中,额外的性能开销是令人可怕的。回收的触发时机有两种可能,一是用户主动调用gc.collect(),二是对象数量超过阈值。
所以正是GC拖慢了程序的性能,所以我们可以考虑在处理的时候禁止垃圾回收。
通过这样的改进之后速度确度会有很大的提升。但是又有也会另外的一个问题,内存溢出,由于运行的过程中生成大量的对象,一次使用后就没有了引用,由于关闭了垃圾回收机制,一直存在内存中得不到清理,然后程序的内存使用量越来越大。解决的方法就是定期打开gc.enable()再关闭或者主动调用gc.collect(),这样就可以了。
通过上述的改进后程序确实了很多,可是我的程序还是运行的越来越慢,我都怀疑人生了,然后分别测试了各个步骤所花费的时间才知道了原因,我使用了pandas创建一个DataFrame,然后每次迭代得到的结果都添加新的数据到DataFrame中,随着里边的数据越来越多,添加的速度也就越来越慢了,严重的拖累的运行速度。这里的解决方法有两个:
1 分段保存结果,间隔一段时间就保存一次结果,最后再将多次的结果合并。
2 换一个数据存储方法,我是直接使用了python的字典进行保存结果,它随着数据的增多添加的速度也会变慢,但是差别不是很大,在可接受的范围内,可以使用;或者再加上方法1,分段进行保存再合并也是可以的。
树莓派zero运行python特别慢
版本不兼容。树莓派zero是一款微型电脑,内部配置了多种电脑应用程序,用户在使用时若发现运行python特别慢,是因为版本不兼容的问题,这时用户只需要登录python官网,对其专属的系统进行升级版本,即可解决。
python跑了一个小时正常吗
python跑了一个小时不正常。python跑时间超过半小时会发生内存泄漏的情况,是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。我的程序正好有大量的循环,因此也给不断累积的内存泄漏提供了条件。
python特点
python是一种计算机程序设计语言,python是用来编写应用程序的高级编程语言。完成同一个任务,python的代码量很少,但是代码少的代价是运行速度慢。python就为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作内置电池。用python开发,许多功能不必从零编写,直接使用现成的即可。
python语言的缺点
Python并不是没有缺点的,最主要的缺点有以下几个:
Python的执行速度不够快。当然,这也不是一个很严重的问题,一般情况下,我们不会拿Python语言与C/C++这样的语言进行直接比较。在Python语言的执行速度上,一方面,网络或磁盘的延迟,会抵消掉部分Python本身消耗的时间;另一方面,因为Python特别容易和C结合起来,因此,我们可以通过分离一部分需要优化速度的应用,将其转换为编译好的扩展,并在整个系统中使用Python脚本将这部分应用连接起来,以提高程序的整体效率。
Python的GIL锁限制并发:Python的另一个大问题是,对多处理器支持不好。如果读者接触Python时间比较长,那么,一定听说过GIL这个词。GIL是指Python全局解释器锁(GlobalInterpreterLock),当Python的默认解释器要执行字节码时,都需要先申请这个锁。这意味着,如果试图通过多线程扩展应用程序,将总是被这个全局解释器锁限制。当然,我们可以使用多进程的架构来提高程序的并发,也可以选择不同的Python实现来运行我们的程序。
Python2与Python3不兼容:如果一个普通的软件或者库,不能够做到后向兼容,那么,它会被用户无情的抛弃了。在Python中,一个槽点是Python2与Python3不兼容。因为Python没有向后兼容,给所有的Python工程师带来了无数的烦恼。
Python 执行速度慢只是因为它是解释型语言吗
Python 不是解释型语言,事实上也没有「解释型」语言这个分类。
Python 性能略有不佳的原因可能有几个:
首先是 Python 希望自己是一个简单和优雅的语言,需要性能的组件通常用 C 实现,没有太多改进性能的动力。
然后 Python 具有垃圾回收和自动的内存管理功能,并且采用动态类型系统,会在运行时进行类型检查,这会不可避免地略微影响性能,使其不如静态类型(Java)或没有垃圾回收(C/C++)的语言。
摘自维基百科:
「Python开发人员尽量避开不成熟或者不重要的优化。一些针对非重要部位的加快运行速度的补丁通常不会被合并到Python内。」
「因为Python属于动态类型语言,动态类型语言是在运行期间检查数据的类型,不得不保持描述变量值的实际类型标记,程序在每次操作变量时,需要执行数据依赖分支」