python 处理大数据程序运行的越来越慢的问题
最近,我编写并运行了一个处理1 5 00万个数据的程序。我可以每秒处理约1 5 0个数据,预计将在大约1 5 小时内进行处理。
晚上开始走路。
我认为我可以在第二天中午之前得到结果,但是第二天我看到它,什么? ? ?在处理完成之前,当前的数据处理速度在一秒钟内大约为5 ,然后还有3 00小时的等待。
然后我检查了问题。
事实证明,许多人在处理大数据时也有这个问题。
分析大多数文章的原因是GC(废物回收)引起的性能恶化。
Python废物收集机制可维持每个对象的参考计数。
每次制作和破坏内存对象时,都必须修改参考计数。
因此,当创建大量对象时,需要大量修改的参考计算。
对于计划实施过程,额外的性能开销令人恐惧。
有两种可能触发回收利用的可能性。
一个是用户主动调用gc.collect(),另一个是对象的数量超过阈值。
因此,GC降低了该程序的性能,因此我们可以考虑在处理过程中禁止收集废物。
通过这种改进,速度准确性将提高。
但是,还会有其他问题,溢出。
由于在操作过程中产生了大量对象,因此使用后将没有参考。
由于废物收集机制的关闭,它已经是记忆,无法清洁。
然后,程序内存的使用变得越来越大。
解决方案是定期打开gc.enable(),然后将其关闭或主动致电GC.Collect(),这样就可以了。
在上述改进之后,该程序有很多,但是我的程序仍然缓慢慢。
我怀疑生活。
然后我测试了找出原因所花费的时间。
我使用熊猫来创建数据框,然后在每个迭代中获得的结果添加了新数据。
随着越来越多的数据的增加,添加的速度速度较慢,速度较慢,这正在严重拖动运行速度。
这里有两个解决方案:1 将结果保存在细分市场中,保存结果一次,并最终将结果组合好几次。
2 要转换为数据存储方法,我直接使用Python词典来保存结果。
随着数据的增加,它会放慢速度,但差异并不大。
它可以在可接受的范围内使用;或添加方法1 并将其保留在细分中,然后将其组合。
python和c 的区别
Python和C是两个完全不同的程序,设计,设计,设计和设计。语法,excamuntioner管理,应用程序语法包含在富裕的第三方库中。
Python是一种有意义的语言。
这意味着在运行时意味着代码编号。
C是一种编译语言,在比赛之前最好的事情比舌头更快。
但是,C语言语法的C语法需要更多的程序功能。
Ginger March还为程序员和程序员提供了灵活的程序。
引用语言在系统级编程中具有广泛的应用。
例如,操作系统,哪种语言取决于您选择的语言和目标。
为什么 python 运行速度这么慢?
Python运行缓慢的原因有很多,其中有些是:-Python是一种动态键入的语言,每次运行时都必须解释,这意味着它的执行相对较慢。-Pythons解释器(Global Inverterlock)用几个线程限制了同时执行,这也导致相对较慢的Python运行速度。
-Python存储管理机制可能会导致一些性能问题。
例如,Python使用参考计数来管理内存。
如果删除对象,则只有在没有其他变量参考对象的情况下才会发布内存。
这可能会导致内存泄漏和其他性能问题。
既然python是用c语言编写的,为什么速度比c慢那么多?
有些视图是Python的慢速输入的原因,但是相同的动态LUA语言并不慢。在探索了这种现象之后,您可以看到答案是在Python的虚拟机实现中。
首先,重要的是要了解Python是可以通过python.org下载的语言。
下载的结果是Cpython实施。
我们试图避免提及CPYTHON,但是VM设计的核心概念并没有太大不同,由于该示例的简化,抽象不会改变太大。
Python的操作机制基于堆栈虚拟机,与动态类型Lua使用的寄存器虚拟机模式相反。
LUA可以具有较小数量的命令集,但是Python的堆栈VM需要创建更多的字节代码,因此执行效率存在差异。
虚拟机执行过程是直观且简单的,如果以示例为例,指南语法分析和操作将通过交换机结构实现。
关键是复制方法的性能。
Python的执行效率受此方法速度的影响。
如果您深入cpython源代码,您会看到执行过程包含文件之间的大量调用,例如pynumber_add指令的执行。
相比之下,CPU仅需要几个时钟周期来执行其他任务。
例如,例如,LUA,类型确认的效率和方法调用的效率远高于Python。
当Python执行一种识别和实现类型时,LUA完成了检查和方法执行的类型。
这是Python的原因之一。
为了解决Python性能问题,您可以使用Cython工具。
Cython可以将Python代码编译为C代码,因此它可以实现接近C的执行速度,但是应用程序是有限的。
您应该仔细考虑特定的使用方案。
最后,取代Python实现,例如使用Ironpython。
您可以看到其他实现之间的性能存在差异。
与Ironpython的执行速度相比,它显示出显着的性能差异。