python基础
文章平均质量分 77
youbo_sun
涉足机器学习、区块链、大数据、数据分析、系统开发和架构
展开
-
python实例方法,静态方法,类方法
实例方法:在类中定义的普通方法,方法默认参数为self原创 2014-10-14 14:41:44 · 439 阅读 · 0 评论 -
python垃圾回收机制
一、概述:Python的GC模块主要运用了“引用计数”(reference counting)来跟踪和回收垃圾。在引用计数的基础上,还可以通过“标记-清除”(mark and sweep)解决容器对象可能产生的循环引用的问题。通过“分代回收”(generation collection)以空间换取时间来进一步提高垃圾回收的效率。二、引用计数在Python中,大多数对象的生命周期都是转载 2015-09-14 14:18:51 · 351 阅读 · 0 评论 -
Python的高级并发技术
与“非并发的程序”(nonconcurrent program)相比,并发程序更难编写,也更难维护(有时甚至难度相当大),而且并发程序的运行效率有时比非并发的程序低(甚至低得多)。虽然如此,但优秀的并发程序确实比非并发程序快很多,所以,为了提高效率,我们还是得花时间去研究它。目前大多数编程语言(包括C++和Java)都直接支持并发,而且其标准库通常还提供了一些封装程度较高的功能。并发可以通转载 2015-10-09 19:34:03 · 2935 阅读 · 0 评论 -
Python字符编码详解
1. 字符编码简介1.1. ASCIIASCII(American Standard Code for Information Interchange),是一种单字节的编码。计算机世界里一开始只有英文,而单字节可以表示256个不同的字符,可以表示所有的英文字符和许多的控制符号。不过ASCII只用到了其中的一半(\x80以下),这也是MBCS得以实现的基础。1.2. MBCS转载 2015-09-20 23:14:59 · 404 阅读 · 0 评论 -
python实现生成带Logo的二维码
二维码简称 QR Code(Quick Response Code),学名为快速响应矩阵码,是二维条码的一种,由日本的 Denso Wave 公司于 1994 年发明。现随着智能手机的普及,已广泛应用于平常生活中,例如商品信息查询、社交好友互动、网络地址访问等等。安装 Python 的二维码库 -- qrcodepip install qrcode由于生成 qrcode转载 2015-10-09 15:56:11 · 4298 阅读 · 0 评论 -
Django中如何使用django-celery完成异步任务 (1)
本篇博文主要介绍在开发环境中的celery使用,请勿用于部署服务器.许多Django应用需要执行异步任务, 以便不耽误http request的执行. 我们也可以选择许多方法来完成异步任务, 使用Celery是一个比较好的选择, 因为Celery有着大量的社区支持, 能够完美的扩展, 和Django结合的也很好. Celery不仅能在Django中使用, 还能在其他地方被大量的使用. 因此转载 2015-10-10 18:29:08 · 689 阅读 · 0 评论 -
Django中如何使用django-celery完成异步任务 (2)
在上一篇博文中, 我们介绍了如何在开发环境中使用Celery. 接下来我们介绍一下如何在部署环境使用Celery.1. 简单设置一个简单的Celery堆有一个queue和一个worker进程组成. 使用以下命令启动worker: python manage.py celery worker -B以上命令是基于django-celery, 当然你也可以celery自转载 2015-10-10 18:31:30 · 706 阅读 · 0 评论 -
celery最佳实践
目录[-]1,不要使用数据库作为你的AMQP Broker2,使用更多的queue(不要只用默认的)3,使用具有优先级的workers4,使用Celery的错误处理机制5,使用Flower6,没事别太关注任务退出状态7,不要给任务传递 Database/ORM 对象最后作为一个Celery使用重度用户,看到Celery Best Practice转载 2015-10-13 12:06:09 · 532 阅读 · 0 评论 -
Python中的并发编程
简介 我们将一个正在运行的程序称为进程。每个进程都有它自己的系统状态,包含内存状态、打开文件列表、追踪指令执行情况的程序指针以及一个保存局部变量的调用栈。通常情况下,一个进程依照一个单序列控制流顺序执行,这个控制流被称为该进程的主线程。在任何给定的时刻,一个程序只做一件事情。 一个程序可以通过Python库函数中的os或subprocess模块创建新进程(例如os.fork()转载 2015-10-13 15:57:10 · 340 阅读 · 0 评论 -
python多线程编程(二)--threading模块
threading模块对象对象描述Thread一个线程的执行对象Lock锁对象RLock可重入锁对象,使单线程可以再次获得已经获得了的锁(递归锁定)Condition条件变量,让一个线程停下来,等待其它线程满足了某个条件转载 2015-10-13 16:53:15 · 461 阅读 · 0 评论 -
八大排序算法的 Python 实现
本文用Python实现了插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序。1、插入排序描述插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素转载 2015-10-29 08:50:25 · 405 阅读 · 0 评论 -
缓存算法的 Python 实现
这篇文章描述了怎么用 Python 实现复杂度为 O(1) 的「最不常用」(Least Frequently Used, LFU)缓存回收算法。在 Ketan Shah、Anirban Mitra 和 Dhruv Matani的论文中有算法描述。实现中的命名是按照论文中的命名。LFU 缓存回收机制对于 HTTP 缓存网络代理是非常有用的,我们可以从缓存中移除那些最不常使用的条目转载 2015-10-29 09:23:15 · 841 阅读 · 0 评论 -
python多线程编程(一)--thread模块
python提供两个模块支持多线程编程:thread和threading。thread模块函数函数描述start_new_thread(function,args,kwargs=None)产生一个新线程,在新线程中用指定参数和可选的kwargs调用function函数allocate_lock()转载 2015-10-13 16:51:47 · 499 阅读 · 0 评论 -
python 根据类的字符串名实例化对象
方法一:class obj(object): pass a = eval('obj()')方法二:如果是经常需要这样可以#将用来创建对象的字符串预编译成code对象.create_obj = compile('obj()', 'create_obj.py', 'eval') #需要创建的时候, 直接用code转载 2015-10-31 15:09:28 · 16688 阅读 · 0 评论 -
pycharm快捷键
pycharm-3.4.1/help目录下可以找到ReferenceCard.pdf快捷键英文版说明PyCharm Default KeymapPyCharm3.0默认快捷键(翻译的)1、编辑(Editing)Ctrl + Space 基本的代码完成(类、方法、属性)Ctrl + Alt + Space 快速导入任意类Ctrl + Shift + Enter 语句完转载 2016-04-11 17:23:50 · 369 阅读 · 0 评论 -
python技巧
本文整理自SO上的热门问答 hidden features of python ,早期有人做过类似的整理,但是内容比较旧而且比较粗糙,因此笔者在原文基础上加入自己的一些理解,另外那些高质量的评论也引入进来了。总之,这是一篇用心之作,希望你可以喜欢。链式比较操作>>> x = 5>>> 1 10True>>> 10 20 False>>> x 10 10 100True>>转载 2016-04-18 14:21:26 · 438 阅读 · 0 评论 -
pycharm 2016 2注册码
43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdGlvbiI6IkZvciBlZHVjYXRpb25hbCB1c2Ugb25seSIsImNoZ转载 2016-08-18 12:57:46 · 1070 阅读 · 0 评论 -
python 正则分组获取html中匹配值
import rehtml = """ """p = re.compile('name="__hash__" value="(\w+)" />')print p.findall(html)#['e25fa899c26e9c8b54e6f5e2c73bf65b_546782153d0ccd5501f5c4ddedb71ba1']原创 2015-08-21 16:51:13 · 1754 阅读 · 0 评论 -
python 正则获取html中的值
# -*- coding: utf-8 -*-from BeautifulSoup import BeautifulSoup import redef get_timestamp(html): soup = BeautifulSoup(html) authi_elems = soup.findAll('div', { 'class': 'authi' }) for转载 2015-08-21 15:57:16 · 1346 阅读 · 0 评论 -
Ubuntu安装 Scrapy框架
需要安装的包:python2.7、 Twisted、w3lib、lxml 或者libxml2、simplejson、pyopenssl、pycrypto、Scrapy。python系统已经自带,Scrapy需要 python2.7。1.安装 Twisted: sudo apt-get install python-twisted python-libxml2 python-sim原创 2015-02-09 13:54:30 · 751 阅读 · 0 评论 -
python2.xhe 3.x区别
1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%。Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可 以取得很好的优化结果。 Py3.1性能比Py2.5慢15%,还有很大的提升空间。 2.编码 Py3.X源码文件默认使用utf-8编码,这就使得以下代码是合法的: >>> 中国 = 'china' >>>转载 2015-03-11 11:28:52 · 566 阅读 · 1 评论 -
利用pip 安装相同python包环境
首先安装pip工具: sudo apt-get install python-pip 或者easy_install pip利用pip生成python依赖包文件: pip freeze > requirements.txt在新服务器上或者虚拟环境下利用requirements.txt安装包环境: pip install -r requirements.txt原创 2015-07-09 12:21:13 · 472 阅读 · 0 评论 -
WSGI简介
WSGI 简介背景Python Web 开发中,服务端程序可以分为两个部分,一是服务器程序,二是应用程序。前者负责把客户端请求接收,整理,后者负责具体的逻辑处理。为了方便应用程序的开发,我们把常用的功能封装起来,成为各种Web开发框架,例如 Django, Flask, Tornado。不同的框架有不同的开发方式,但是无论如何,开发出的应用程序都要和服务器程序配合,才能为用户提供服转载 2015-07-09 10:01:11 · 560 阅读 · 0 评论 -
python 显示unicode字符问题
1. s = = eval("u"+ "‘"+ "\u56c3\u67e4" + "'") 2.s = '\u56c3\u67e4' text = "".join(unichr(int(c, 16)) for c in s.split('\u')[1:])原创 2015-07-09 09:41:16 · 1053 阅读 · 0 评论 -
windows pip安装提示ascii code无法解析
UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-5: ordinal not in range(128) 中文window 默认编码为GBK, 可以使用cmd 运行chcp命令,如果为936即GBK。pip安装时,会加载用户目录,如果用户目录为中文有可能就解析不了, 可以修改默认编码即可原创 2015-07-14 14:30:43 · 1264 阅读 · 0 评论 -
pytnon DES加密CBC模式
import pyDesimport base64class Crypt(object): @classmethod def des_base64_encrypt(cls, text, key, iv, code='GBK'): """ 基于DES和base64的加密算法 :param text 加密串原创 2015-07-18 14:05:32 · 876 阅读 · 0 评论 -
python 实现DES加密 ECB模式
# -*- coding:utf-8 -*-import base64import jsonfrom Crypto.Cipher import DESclass Crypt(object): """加密和解密工具类""" des_key = "12345678" block_size = DES.block_size pa原创 2015-07-18 13:56:26 · 10260 阅读 · 1 评论 -
pycharm 远程调试配置
利用pycharm2.7 windows远程调试linux服务器上的程序1.windows 下安装setuptools一般默认easy_install已经安装好了,如果没有安装下载ez_setup.py脚本安装。 下载地址: https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py 下载完后直接执行pyt原创 2015-07-18 14:43:04 · 2635 阅读 · 0 评论 -
python RSA签名和解签
# -*- coding:utf-8 -*-import base64from Crypto.Hash import SHAfrom Crypto.PublicKey import RSAfrom Crypto.Signature import PKCS1_v1_5 as pkclass Crypt(object): public_key = RSA.原创 2015-07-18 14:10:56 · 1824 阅读 · 0 评论 -
pycharm IDE设置内存使用
PyCharm使用jre,所以设置内存使用的情况和eclipse类似。编辑PyCharm安装目录下PyCharm 4.5.3\bin下的pycharm.exe.vmoptions文件, 如下: -server-Xms128m-Xmx512m-XX:MaxPermSize=250m-XX:ReservedCodeCacheSize=150m-XX:+UseConcMark原创 2015-08-26 16:10:41 · 29372 阅读 · 1 评论 -
Resource interpreted as Stylesheet but transferred with MIME type application/x-css
windows django 运行项目访问页面加载css样式时报错:Resource interpreted as Stylesheet but transferred with MIME type application/x-css意思是说样式表已经识别出来了但是被转换成application/x-css格式了。这是因为windows环境下读取了注册表中的Content Type。修原创 2015-07-21 18:11:37 · 9596 阅读 · 0 评论 -
pycharm 4.5.3控制台乱码
python文件模块文件中中文乱码注意文件的编码开头第一行设置为:当在window是下开发时,中文系统默认使用为gbk编码,所以控制台容易出现乱码。设置为utf-8即可。设置如下:打开pycharm : Setting>Editor>file Encodings设置IDE Encoding: utf-8 Project Encoding: utf-8原创 2015-08-17 14:55:26 · 2110 阅读 · 0 评论 -
python 安装包error: Unable to find vcvarsall.bat
在windows上安装python的一些与操作系统密切的扩展包时,可能会出现error: Unable to find vcvarsall.bat错误,如:PIL, greenlet, pycrypto等等。在网上搜了一下大部分是有2种方法: 1.安装MinGW, 它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windo原创 2015-09-05 15:00:13 · 671 阅读 · 0 评论 -
python 获取html标签中的值
#!/usr/bin/env python #-*- coding: utf8 -*- import re html = """ 白天 多云 14℃ 夜间转载 2015-08-21 15:59:26 · 8614 阅读 · 0 评论 -
python 并发任务
在DDG https://duckduckgo.com/搜索“Python threadingtutorial”关键字,结果基本上却都是相同的类+队列的示例。标准线程多进程,生产者/消费者示例:在此我不想印证采用生产者/消费者模式来处理线程/多进程是错误的— 确实没问题。实际上这也是解决很多问题的最佳选择。但是,我却不认为这是日常工作中常用的方式。问题所在转载 2015-08-20 11:55:37 · 609 阅读 · 0 评论 -
完全理解Python迭代对象、迭代器、生成器
在了解Python的数据结构时,容器(container)、可迭代对象(iterable)、迭代器(iterator)、生成器(generator)、列表/集合/字典推导式(list,set,dict comprehension)众多概念参杂在一起,难免让初学者一头雾水,我将用一篇文章试图将这些概念以及它们之间的关系捋清楚。容器(container)容器是一种把多个元素组织转载 2016-10-31 16:13:52 · 481 阅读 · 0 评论