
python
文章平均质量分 70
工程师WWW
R
展开
-
DJANGO VS. WEB2PY
Many people would like to know the differences between Django and web2py. In this short entry, I will make a comparison of two popular Python web frameworks, Django and web2py. Django is an MTV fra...转载 2018-10-01 19:36:21 · 1564 阅读 · 0 评论 -
Python数据库连接池 《DBUtils用户指南》
目录摘要模块下载安装安装为顶层模块安装为Webware的子模块(插件)功能SimplePooledDBSteadyDBPersistentDBPooledDB该选择哪一个?使用方法PersistentDBPooledDB在Webware中使用注意未来功能错误报告与回馈链接作者列表版权与许可摘要DBUtils 是一套允许线程化 Python 程序可以安全和有效的访问数据库的模块。DBUtils已经作...原创 2018-03-15 17:09:18 · 1765 阅读 · 0 评论 -
[Python标准库]Queue——线程安全的 FIFO 实现
[Python标准库]Queue——线程安全的 FIFO 实现 作用:提供一个线程安全的 FIFO 实现。 Python 版本:至少 1.4 Queue 模块提供一个适用于多线程编程的先进先出(first-in,first-out,FIFO)数据结构,可以用来在生产者消费者线程之间安全地传递消息或其他数据。它会为调用者处理锁定,使用多个线程可以安全地处理同...原创 2018-03-08 15:32:16 · 2236 阅读 · 0 评论 -
Tornado开发技巧
Tornado框架算是很轻量级的 单线程 异步 编程框架,只是额外加了很基础的模板、HEADER、COOKIE、路由等的WEB相关的支持(都定义在web.py里),它的大部分代码是在封装nonblocking socket、epoll、event loop等基础的异步编程模块。所以,在使用tornado之前一定要先了解这个框架的定位,它不单能够用于WEB服务编程,也非常适用于需要异步编程的后台原创 2018-02-07 11:38:02 · 1448 阅读 · 0 评论 -
Python的递推式构造列表(List comprehension)
python语言的一种重要原则(zen)就是简洁、自然,递推式构造列表(List)、字典(dict)就是一个很好的例子。我们的代码在初始化一个List或者dict时经常是这样写的:new_list = []for i in old_list: if filter(i): new_list.append(expressions(i))12345但其实python提过了一个原创 2018-01-17 20:23:06 · 1639 阅读 · 0 评论 -
Python学习日记之字典深复制与浅复制
Python中通过copy模块有两种复制(深复制与浅复制)copy 浅复制 复制时只会复制父对象,而不会复制对象的内部的子对象。deepcopy 深复制 复制对象及其子对象因此,复制后对原dict的内部的子对象(方括号[]内元素)进行操作时,浅复制dict会受操作影响而变化,而深复制dict则不会受操作变化而使用del 对父对象进行操作时,浅复制,深复制后的副本为全新副本,原创 2018-01-15 15:23:36 · 835 阅读 · 0 评论 -
APScheduler浅析
前言APScheduler是python下的任务调度框架,全程为Advanced Python Scheduler,是一款轻量级的Python任务调度框架。它允许你像Linux下的Crontab那样安排定期执行的任务,并且支持Python函数或任意可调用的对象。安装(ENV1) [eason@localhost]$ pip install apschedulerCollect原创 2018-01-23 11:52:46 · 2959 阅读 · 0 评论 -
Import Error No module named Crypto.Cipher问题解决方案
from Crypto import Random 问题from Crypto.Cipher import AES 问题在导入以上两条语句中,出现问题,显示出现无法找到crypto包,按照提示,加入crypto包,然后还是出现这个问题。问题解决参考以下链接:http://stackoverflow.com/questions/19623267/importerror-n原创 2017-08-29 17:49:20 · 10693 阅读 · 0 评论 -
Python中os和shutil模块实用方法集锦
# os 模块os.sep 可以取代操作系统特定的路径分隔符。windows下为 '\\'os.name 字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是 'posix'os.getcwd() 函数得到当前工作目录,即当前Python脚本工作的目录路径os.getenv() 获取一个环境变量,如果没有返回noneos.p原创 2017-12-14 10:42:55 · 987 阅读 · 0 评论 -
python进程池:multiprocessing.pool
在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间。当被操作对象数目不大时,可以直接利用multiprocessing中的Process动态成生多个进程,十几个还好,但如果是上百个,上千个目标,手动的去限制进程数量却又太过繁琐,此时可以发挥进程池的功效。Pool可以提供指定数量的进程供用户调用,当有新的请求提交到pool中时,如果原创 2017-12-04 19:19:44 · 1303 阅读 · 0 评论 -
用profile协助程序性能优化
上帝说:“选择了脚本,就不要考虑性能。”我是很支持这句话的,使用脚本要的就是开发速度、良好的扩展性以及可维护性。可惜到了最后,我们的程序难免会运行得太慢,我们的客户不能忍受,这时候,我们就不得不考虑对代码的性能进行优化了。 程序运行慢的原因有很多,比如存在太多的劣化代码(如在程序中存在大量的“.”操作符),但真正的原因往往是比较是一两段设计并不那么良好的不起眼的程序,原创 2017-12-21 14:36:17 · 2828 阅读 · 0 评论 -
使用 Python 进行分布式系统协调
笔者之前的博文提到过,随着大数据时代的到来,分布式是解决大数据问题的一个主要手段,随着越来越多的分布式的服务,如何在分布式的系统中对这些服务做协调变成了一个很棘手的问题。今天我们就来看看如何使用Python,利用开源对分布式服务做协调。在对分布式的应用做协调的时候,主要会碰到以下的应用场景:业务发现(service discovery)找到分布式系统中存在那些可用的服务和节点名字服原创 2017-12-20 19:27:17 · 1728 阅读 · 0 评论 -
Python多线程学习
一、Python中的线程使用: Python中使用线程有两种方式:函数或者用类来包装线程对象。1、 函数式:调用thread模块中的start_new_thread()函数来产生新线程。如下例: view plaincopy to clipboardprint?import time import thread def timer(no, int原创 2017-10-16 17:52:42 · 1570 阅读 · 0 评论 -
python中使用 C 类型的数组以及ctypes 的用法
Python 在 ctypes 中为我们提供了类似C语言的数据类型,它的用途(我理解的)可能是:(1) 与 其他语言(如 C、Delphi 等)写的动态连接库DLL 进行交换数据,因为 python 的 数据与 DLL难以进行数据交换。(2) python 的字符串一旦形成,是不可变的,为了算法的需要,我们有时需要对字符串进行原位操作 ( in place ),而不想浪费另外的内存空间原创 2017-10-19 17:54:47 · 13074 阅读 · 1 评论 -
python ctypes 探究 ---- python 与 c 的交互
近几天使用 python 与 c/c++ 程序交互,网上有推荐swig但效果都不理想,所以琢磨琢磨了 python 的 ctypes 模块。同时,虽然网上有这方面的内容,但是感觉还是没说清楚。这里记录下来做备用,同时也给广大 python with c/c++ 派留给方便。如果你觉得我写的不好,可以参考官方文档里对 ctypes 的介绍,那里说不一定有你想要的。如有错误,请指正:)。原创 2017-10-20 16:36:47 · 1946 阅读 · 0 评论 -
Python collections模块总结
除了我们使用的那些基础的数据结构,还有包括其它的一些模块提供的数据结构,有时甚至比基础的数据结构还要好用。collectionsChainMap这是一个为多个映射创建单一视图的类字典类型,也就是说,它同样具有字典类型的方法,它比基础数据结构中的字典的创建和多次更新要快,需要注意的是,增删改的操作都只会针对该对象的第一个字典,其余字典不会发生改变,但是如果是查找,则会在多个字典中查找,直到找到第一个...原创 2018-03-16 10:26:04 · 415 阅读 · 0 评论 -
Django Python实战
Django Python实战Django提供了一个高级的框架,用它只需要很少的几行代码就能完成一个Web应用。Django中容易犯的和元组相关的错误:>>> b = ("just-one")>>> b[0]'j'>>> d = "just-one",>>> d[0]'just-one'1234567元组是由逗号决定的,而不是小括号。装饰器P原创 2018-03-02 18:33:36 · 677 阅读 · 0 评论 -
Python实例浅谈之五Python守护进程和脚本单例运行
一、简介 守护进程最重要的特性是后台运行;它必须与其运行前的环境隔离开来,这些环境包括未关闭的文件描述符、控制终端、会话和进程组、工作目录以及文件创建掩码等;它可以在系统启动时从启动脚本/etc/rc.d中启动,可以由inetd守护进程启动,也可以有作业规划进程crond启动,还可以由用户终端(通常是shell)执行。 Python有时需要保证只运行一个脚本实例,以避免数...转载 2018-09-12 11:19:48 · 809 阅读 · 0 评论 -
定时任务框架APScheduler学习详解
在平常的工作中几乎有一半的功能模块都需要定时任务来推动,例如项目中有一个定时统计程序,定时爬出网站的URL程序,定时检测钓鱼网站的程序等等,都涉及到了关于定时任务的问题,第一时间想到的是利用time模块的time.sleep()方法使程序休眠来达到定时任务的目的,虽然这样也可以,但是总觉得不是那么的专业,^_^所以就找到了python的定时任务模块APScheduler:APScheduler...转载 2018-07-30 15:22:55 · 1880 阅读 · 0 评论 -
python版protobuf 安装
1. 下载protobuf源代码(当前最新版本为:2.5.0) #cd /opt #wget https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz2. 解压,编译,安装 #tar zxvf protobuf-2.5.0.tar.gz #cd protobuf-2.5.0 #./configure #make #make check ...原创 2018-05-21 18:46:12 · 9117 阅读 · 0 评论 -
Python中struct.pack()和struct.unpack()用法详细说明
python中的struct主要是用来处理C结构数据的,读入时先转换为Python的字符串类型,然后再转换为Python的结构化类型,比如元组(tuple)啥的~。一般输入的渠道来源于文件或者网络的二进制流。1.struct.pack()和struct.unpack()在转化过程中,主要用到了一个格式化字符串(format strings),用来规定转化的方法和格式。下面来谈谈主要的方法:1.1 ...原创 2018-05-21 18:30:57 · 262153 阅读 · 14 评论 -
Python class 抽象类
简单的方法是: class Sheep(object): def get_size(self): raise NotImplementedError 任何从Sheep继承下来的子类必须实现get_size方法。否则就会产生一个错误。但这种实现方法有个缺点。定义的子类只有调用那个方法时才会抛错抽象基类要定义抽象基类,需要使用abc模块。该模块定义了一个元类(ABCMe...原创 2018-05-04 11:53:16 · 3369 阅读 · 0 评论 -
使用SQLAlchemy时数据库连接池的问题
在使用 create_engine创建引擎时,如果默认不指定连接池设置的话,一般情况下,SQLAlchemy会使用一个 QueuePool绑定在新创建的引擎上。并附上合适的连接池参数。在以默认的方法create_engine时(如下),就会创建一个带连接池的引擎。engine = create_engine('postgresql://postgres@127.0.0.1/dbname')在这种情...原创 2018-05-03 19:20:51 · 10786 阅读 · 2 评论 -
如何使用faker创建假数据
有些时候我们需要一些假数据来测试,在python中有一款非常好用的包,faker,可以满足这类的需求。项目地址 https://github.com/joke2k/faker安装:pip install faker或者直接上 github 下载安装即可使用:要创建假数据,需要先有一个faker实例from faker import Fakerfake = Faker()然后调用方法即可fake....原创 2018-05-03 19:08:37 · 2612 阅读 · 1 评论 -
大概了解Tornado框架的设计模型
Tornado框架设计模型从上面的图可以看出,Tornado 不仅仅是一个WEB框架,它还完整地实现了HTTP服务器和客户端,在此基础上提供WEB服务。它可以分为四层:最底层的EVENT层处理IO事件;TCP层实现了TCP服务器,负责数据传输;HTTP/HTTPS层基于HTTP协议实现了HTTP服务器和客户端;最上层为WEB框架,包含了处理器、模板、数据库连接、认证、本地化等等WEB框架需要具备的...原创 2018-04-17 11:30:52 · 1296 阅读 · 0 评论 -
Mina、Netty、Twisted一起学(五):整合protobuf
protobuf是谷歌的Protocol Buffers的简称,用于结构化数据和字节码之间互相转换(序列化、反序列化),一般应用于网络传输,可支持多种编程语言。protobuf如何使用这里不再介绍,本文主要介绍在MINA、Netty、Twisted中如何使用protobuf,不了解protobuf的同学可以去参考我的另一篇博文。在前面的一篇博文中,有介绍到一种用一个固定为4字节的前缀Header来...原创 2018-04-03 23:52:09 · 427 阅读 · 0 评论 -
twisted使用protobuf的网络通信方案
protobuf,google开源的序列化结构数据的方案,官方提供提供了 C++、Java、Python 三种语言的 API,安装使用方法详见:https://github.com/google/protobuf。Python中序列/反序列消息时,有两种实现,pure-Python implementation 和 C++ implementation,当然后者性能更高,详见: https://g...原创 2018-04-03 23:47:55 · 1031 阅读 · 0 评论 -
python的接口实现zope.interface示例
python支持多继承,但是不支持接口,zope.inteface是其三方的接口实现库,在twisted中有大量使用[python] view plain copyfrom zope.interface import Interface from zope.interface import implementer import socket class IHostNameResolver...原创 2018-04-03 18:51:47 · 1116 阅读 · 0 评论 -
python 网络框架twisted基础学习及详细讲解
twisted网络框架的三个基础模块:Protocol, ProtocolFactory, Transport.这三个模块是构成twisted服务器端与客户端程序的基本。Protocol:Protocol对象实现协议内容,即通信的内容协议ProtocolFactory: 是工厂模式的体现,在这里面生成协议Transport: 是用来收发数据,服务器端与客户端的数据收发与处理都是基于这个模块在win...原创 2018-04-02 18:10:06 · 928 阅读 · 0 评论 -
15.8. logging.config — Logging configuration
15.8.1. Configuration functionsThe following functions configure the logging module. They are located in the logging.config module. Their use is optional — you can configure the logging module using t...原创 2018-03-23 11:30:12 · 789 阅读 · 0 评论 -
Python的defaultdict模块和namedtuple模块
在Python中有一些内置的数据类型,比如int, str, list, tuple, dict等。Python的collections模块在这些内置数据类型的基础上,提供了几个额外的数据类型:namedtuple, defaultdict, deque, Counter, OrderedDict等,其中defaultdict和namedtuple是两个很实用的扩展类型。defaultdict原创 2017-08-10 11:46:38 · 2303 阅读 · 0 评论 -
Python操作redis
python连接方式:点击 下面介绍详细使用1、String 操作 redis中的String在在内存中按照一个name对应一个value来存储set()#在Redis中设置值,默认不存在则创建,存在则修改r.set('name', 'zhangsan')'''参数: set(name, value, ex=None, px=None,原创 2017-07-13 16:34:04 · 2640 阅读 · 0 评论 -
Python-OpenCV人脸检测(代码)
Python-OpenCV人脸检测(代码)@author:wepon@blog:http://blog.youkuaiyun.com/u012162613/article/details/43523507做人脸识别,首先要检测出图片/视频中的人脸,今天就研究了一下opencv的python接口,把常用的一些功能模块写成函数。基于Python-OpenCV以及PIL,实现原创 2017-06-13 11:52:29 · 4690 阅读 · 1 评论 -
python 字典访问的三种方法
定义字典 dic = {'a':"hello",'b':"how",'c':"you"}方法一:for key in dic: print key,dic[key] print key + str(dic[key])结果: a hello ahello c you cyou b how bhow细节:原创 2017-04-24 11:36:28 · 10986 阅读 · 0 评论 -
python 内置模块之hashlib、hmac、uuid
一、hashlibmd5和sha算法通过消息摘要算法生成定长的消息摘要,消息摘要算法是不可逆的。但同一段消息通过摘要算法后得到的值是一样的,可一通过比对消息摘要验证数据的完整性。sha算法比MD5算法安全,但所需的时间也稍长。1、原始消息摘要import hashlib# ######## md5 ########hash = hashlib.md5()原创 2017-04-24 11:19:55 · 1236 阅读 · 0 评论 -
理解Python的With语句
With语句是什么?Python’s with statement provides a very convenient way of dealing with the situation where you have to do a setup and teardown to make something happen. A very good example for this is t原创 2017-04-24 11:01:53 · 926 阅读 · 0 评论 -
python 各种模块学习
0.1. 关于本书0.2. 代码约定0.3. 关于例子0.4. 如何联系我们核心模块1.1. 介绍1.2. _ _builtin_ _ 模块1.3. exceptions 模块1.4. os 模块1.5. os.path 模块1.6. stat 模块1.7. string 模块1.8. re 模块1.9. math 模块1.10. cmath 模块1.11. operator 模块原创 2017-04-24 10:25:46 · 6826 阅读 · 1 评论 -
Eclipse+PyDev离线配置Python开发环境
当然,对于在线配置Eclipse+PyDev开发环境,此处不做讲解,此类博文在网上也大有存在;所以此篇博文将不再多做累述,将进行详细的介绍离线配置Eclipse+PyDev的Python开发环境。首先,下载去http://pydev.org/下载Python的Eclipse插件PyDev。目前的最新版是PyDev 2.6.0.zip,将压缩文件解压出来。得到features和plugi...原创 2017-05-14 17:19:34 · 2511 阅读 · 0 评论 -
Python内置函数清单
Python所有的内置函数 Built-in Functions abs()divmod()input()open()staticmethod()all()enumerate()int()ord()str()any()原创 2017-04-21 16:53:19 · 1063 阅读 · 0 评论 -
如何制作python安装模块(setup.py)
python setup.py --help-commandsPython模块的安装方法:1. 单文件模块:直接把文件拷贝到$python_dir/lib2. 多文件模块,带setup.py:python setup.py install 3. egg文件,类似Java的jar:1) 下载ez_setup.py,运行python ez_s原创 2017-05-04 09:24:48 · 9030 阅读 · 0 评论