【python性能提升的几种方法】教程文章相关的互联网学习教程文章

PyPy和CPython的性能比较测试

最近我在维基百科上完成了一些数据挖掘方面的任务。它由这些部分组成:解析enwiki-pages-articles.xml的维基百科转储;把类别和页存储到MongoDB里面;对类别名称进行重新分门别类。我对CPython 2.7.3和PyPy 2b的实际任务性能进行了测试。我使用的库是:redis 2.7.2pymongo 2.4.2此外CPython是由以下库支持的:hiredispymongo c-extensions测试主要包含数据库解析,所以我没预料到会从PyPy得到多大好处(何况CPython的数据库驱动是C...

python高性能编程方法一

阅读 Zen of Python,在Python解析器中输入 import this. 一个犀利的Python新手可能会注意到"解析"一词, 认为Python不过是另一门脚本语言. "它肯定很慢!"毫无疑问Python程序没有编译型语言高效快速. 甚至Python拥护者们会告诉你Python不适合这些领域. 然而,YouTube已用Python服务于每小时4千万视频的请求. 你所要做的就是编写高效的代码和需要时使用外部实现(C/C++)代码. 这里有一些建议,可以帮助你成为一个更好的Python开发者:1. 使...

高性能python编程之协程(stackless)

我们都知道并发(不是并行)编程目前有四种方式,多进程,多线程,异步,和协程。多进程编程在python中有类似C的os.fork,当然还有更高层封装的multiprocessing标准库,在之前写过的python高可用程序设计方法http://www.cnblogs.com/hymenz/p/3488837.html中提供了类似nginx中master process和worker process间信号处理的方式,保证了业务进程的退出可以被主进程感知。多线程编程python中有Thread和threading,在linux下所谓的线程...

python性能提升的几种方法

关于python 性能提升的一些方案。 一、函数调用优化(空间跨度,避免访问内存)程序的优化核心点在于尽量减少操作跨度,包括代码执行时间上的跨度以及内存中空间跨度。 1.大数据求和,使用suma = range(100000) %timeit -n 10 sum(a) 10 loops, best of 3: 3.15 ms per loop %%timeit...: s = 0...: for i in a:...: s += i...: 100 loops, best of 3: 6.93 ms per loop2.小数据求和,避免使用sum%timeit -n 1000 s = a + b + c +...

Python判断列表是否已排序的各种方法及其性能分析

声明本文基于Python2.7语言,给出判断列表是否已排序的多种方法,并在作者的Windows XP主机(Pentium G630 2.7GHz主频2GB内存)上对比和分析其性能表现。一. 问题提出Haskell培训老师提出一个问题:如何判断列表是否已经排序?排序与否实际只是相邻元素间的某种二元关系,即a->a->Bool。所以第一步可以把二元组列表找出来;第二步是把这个函数作用于每个元组,然后用and操作。老师给出的实现代码如下:pair lst = zip lst ( tail lst...

实例探究Python以并发方式编写高性能端口扫描器的方法

关于端口扫描器 端口扫描工具(Port Scanner)指用于探测服务器或主机开放端口情况的工具。常被计算机管理员用于确认安全策略,同时被攻击者用于识别目标主机上的可运作的网络服务。 端口扫描定义是客户端向一定范围的服务器端口发送对应请求,以此确认可使用的端口。虽然其本身并不是恶意的网络活动,但也是网络攻击者探测目标主机服务,以利用该服务的已知漏洞的重要手段。端口扫描的主要用途仍然只是确认远程机器某个服务的可用...

在Python中使用异步Socket编程性能测试

OK,首先写一个python socket的server段,对开放三个端口:10000,10001,10002.krondo的例子中是每个server绑定一个端口,测试的时候需要分别开3个shell,分别运行.这太麻烦了,就分别用三个Thread来运行这些services.import optparse import os import socket import time from threading import Thread import StringIO txt = 1111 2222 3333 4444 def server(listen_socket): while True: buf = StringIO.StringIO(txt) sock...

高性能web服务器框架Tornado简单实现restful接口及开发实例【图】

有个朋友让我搞搞tornado框架,说实话,这个框架我用的不多。。。 我就把自己的一些个运维研发相关的例子,分享给大家。怎么安装tornado,我想大家都懂。pip install tornado 再来说说他的一些个模块,官网有介绍的。我这里再啰嗦的复读机一下,里面掺夹我的理解。 主要模块 web - FriendFeed 使用的基础 Web 框架,包含了 Tornado 的大多数重要的功能,反正你进入就对了。 escape - XHTML, JSON, URL 的编码/解码方法 database - ...

python实现监控linux性能及进程消耗性能的方法

本文以实例形式实现了python监控linux性能以及进程消耗性能的方法,具体实现代码如下:# -*- coding: utf-8 -*- """ Created on Tue Jun 10 10:20:13 2014@author: lifeix """from collections import OrderedDict import time import osdef cpuinfo():lines = open(/proc/stat).readlines()for line in lines:ln = line.split()if ln[0].startswith(cpu):return ln;return [] W = cpuinfo() one_cpuTotal=long(W[1])+long(W[2])+l...

python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)

测了一下django、flask、bottle、tornado 框架本身最简单的性能。对django的性能完全无语了。 django、flask、bottle 均使用gunicorn+gevent启动,单进程,并且关闭DEBUG,请求均只返回一个字符串ok。 tornado直接自己启动,其他内容一致。 测试软件为 siege,测试os为cenos6 64位,测试命令为:代码如下: siege -c 100 -r 100 -b http://127.0.0.1:5000/django测试结果为:代码如下: Transactions: 10000 hits Availa...

Python性能优化的20条建议

优化算法时间复杂度 算法的时间复杂度对程序的执行效率影响最大,在Python中可以通过选择合适的数据结构来优化时间复杂度,如list和set查找某一个元素的时间复杂度分别是O(n)和O(1)。不同的场景有不同的优化方式,总得来说,一般有分治,分支界限,贪心,动态规划等思想。 减少冗余数据 如用上三角或下三角的方式去保存一个大的对称矩阵。在0元素占大多数的矩阵里使用稀疏矩阵表示。 合理使用copy与deepcopy 对于dict和list等数据结...

Python实现测试磁盘性能的方法

本文实例讲述了Python实现测试磁盘性能的方法。分享给大家供大家参考。具体如下: 该代码做了如下工作: create 300000 files (512B to 1536B) with data from /dev/urandom rewrite 30000 random files and change the size read 30000 sequential files read 30000 random files delete all files sync and drop cache after every step bench.py代码如下:代码如下:#!/usr/bin/python # -*- coding: utf-8 -*- filecount = 3000...

用Python编写分析Python程序性能的工具的教程

虽然并非你编写的每个 Python 程序都要求一个严格的性能分析,但是让人放心的是,当问题发生的时候,Python 生态圈有各种各样的工具可以处理这类问题。 分析程序的性能可以归结为回答四个基本问题:正运行的多快 速度瓶颈在哪里 内存使用率是多少 内存泄露在哪里下面,我们将用一些神奇的工具深入到这些问题的答案中去。 用 time 粗粒度的计算时间 让我们开始通过使用一个快速和粗暴的方法计算我们的代码:传统的 unix tim...

修改Python的pyxmpp2中的主循环使其提高性能

引子 之前clubot使用的pyxmpp2的默认mainloop也就是一个poll的主循环,但是clubot上线后资源占用非常厉害,使用strace跟踪发现clubot在不停的poll,查看pyxmpp2代码发现pyxmpp2的poll在使用超时阻塞时使用最小超时时间,而最小超时时间一直是0,所以会变成一个没有超时的非阻塞poll很浪费资源,不打算更改库代码,所以自己仿照poll的mainloop写了一个更加高效的epoll的mainloop 实现#!/usr/bin/env python # -*- coding:utf-8 -*- # # Au...

用Python的Tornado框架结合memcached页面改善博客性能

原因 Blog是一个更新并不很频繁的一套系统,但是每次刷新页面都要更新数据库反而很浪费资源,添加静态页面生成是一个解决办法,同时缓存是一个更好的主意,可以结合Memcached添加少量的代码进行缓存,而且免去去了每次更新文章都要重新生成静态页面,特别当页面特别多时. 实现 主要通过页面的uri进行缓存,结合tornado.web.RequestHandler的prepare和on_finish方法函数, prepare 主要是请求前执行,on_finish()是请求结束之前执行.在渲染模...