![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
weixin_41571449
这个作者很懒,什么都没留下…
展开
-
nsq实现逻辑有序
nsq本身是无序的,如果起多个consumer消费可能会顺序混乱。但实际工作中有这种场景,比如用户更新数据,需要保证两次更新的先后顺序。 因此想到了用队列实现,建100个队列起100个线程去处理,nsq的consumer只做最简单的操作,这里做的是拿到message,用user_id对100取模,放进相应的队列里,然后等到队列处理完成再手动提交避免重复消费.# -*- coding: utf原创 2018-01-22 22:36:33 · 3777 阅读 · 0 评论 -
python @classmethod和@staticmethod的区别
今天看代码偶然看到这两者, @staticmethod顾名思义,静态方法,这个在java里用的很多哈,给某个类定义一个带static的方法,就可以直接用类名而不是对象去调用。 但其实python里面不存在这个问题,我们调用python 的类里的方法,通常是可以用类名+方法来调用的。 想了想可以用来做一些环境变量的变化,比如收到某消息后,需要改变写文件的路径,或者需要一些类中的常量,可以用静态原创 2018-01-30 02:04:07 · 669 阅读 · 0 评论 -
Python图像包PIL
PIL是python常用的图像包,主要用来图像验证等 PIL本身已经没有了,可以看到 https://pypi.python.org/simple/pil/里面是空的 现在安装要使用 pip install PILLOW 但是使用方法并没有变化from PIL import Image支持’jpg’, ‘png’, ‘jpeg’, ‘webp’等格式的图片的处理和验证。值得一提的...原创 2018-02-27 00:54:01 · 1758 阅读 · 0 评论 -
python操作redis
python操作redis,用redis库。安装pip install redis使用建立连接池并取出连接>>> import redis>>> pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)>>> r...原创 2018-03-03 15:26:17 · 411 阅读 · 0 评论 -
pdb调试python代码
本来只知道可以用pycharm,eclipse这类东西打断点。今天同事告诉我才知道原来python本身也有工具pdb,这个名字应该来自c语言的gdb吧=。=使用很简单,import pdb即可,在需要开始断点的地方加上 pdb.set_trace()即可。调试中命令b 打断点,常用于循环,这样下次循环可以在此处停住 c 继续执行直到下一个断点 l ...原创 2018-03-20 00:46:22 · 278 阅读 · 0 评论 -
python防xss注入
什么是xss注入攻击 可以查看这篇文章 其实主要就是转换特定的字符,在某些接口前转换出来或者在前端做处理转换出来,这篇文章只是后端的转换和恢复 转换 quote表示是否要转换引号>>> import cgi>>> cgi.escape('<script>&"', quote=True)'&lt;script&...原创 2018-03-14 09:17:05 · 5589 阅读 · 3 评论 -
pyhon迭代器和yield
python yield其实是迭代器的一种简单写法一般的迭代器会定义__iter__函数 比如以斐波那契数列为例>>> class Fabo(object):...... def __init__(self, max):... self.max = max... self.n, self.a, self.b = 0, 0, ...原创 2018-03-24 09:46:35 · 259 阅读 · 0 评论 -
python的计算符优先级
python为了风格更简洁,和其他语言相比有一些特殊的运算符,这里面容易踩到坑。本周遇到一个,所以整理一下这方面。逻辑运算符优先级not>and>or 这次犯的错误就是判断条件 按照从左到有的顺序很明显是False,但其实python是先算and的。>>> True or False and FalseTrue算数运算符** 表示幂运算...原创 2018-03-31 11:52:44 · 520 阅读 · 0 评论 -
python用gevent实现异步
实际工作中,往往会使用碰到文件io或者网络io。 批处理大量文件或者做爬虫,如果使用同步的方式,大量时间都会消耗在io的等待上,尤其是网络IO,包括建立socket,下载,这个很大程度上取决于网络环境,比如我们去网上爬取一些图片做一些图像处理的训练啊等等。爬取后执行的动作耗时其实很短,90%的时间都耗在网络IO上了,我们就要考虑异步了。 比如我们爬取人人网,微博等平台的资料,因为大家的首页都是...原创 2018-05-01 13:45:38 · 4569 阅读 · 1 评论 -
tornado实现python异步
这是facebook开发的一个异步调用库。gevent是future的模式,而tornado则是callback的那种形式。在其他语言比如java中,future本身就是一个实现好的接口,取值只需要调用get()获取返回然后再用框架比如Spring等等实现注入即可,而callback则预先需要定义好返回的结构体。在python中没有这个问题,因为是动态语言,返回的结果是可以即时的使用和处理的。 ...原创 2018-05-01 16:52:34 · 1131 阅读 · 0 评论 -
python yield from用法
yield from是python3.3之后新增的用法,主要是作为caller和genertor之间的通道来使用的。先说从generator读,比如接受从yield出来的结构def generator(): for i in xrange(10): yield ifor i in (yield from (generator())) print i还...原创 2018-05-01 18:23:28 · 1688 阅读 · 0 评论 -
python zip 用法
zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple,然后返回由这些tuples组成的list。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。 下面写几种常用例子做数据表字段映射时比如我有两张数据表A,B,A的字段和B的字段要相互映射>>> a = ["name","nickname","d原创 2018-01-20 19:55:24 · 1146 阅读 · 0 评论 -
Django教程(一)
本来一般的python server都用flask的,最近接触django项目,所以开始学习django.安装pip安装 pip install DjangohelloWorlddjango-admin.py startproject HelloWorldwujingcideMacBook-Pro:HelloWorld wujingci$ tree.├── H原创 2018-01-14 21:22:19 · 1564 阅读 · 0 评论 -
Django教程(二)
我们接着来看剩余HelloWorld文件夹中的文件 __init__.py 这是个空文件,增加init文件可以让这个包被导入 urls.py 里面写明了list routes to views,我们暂时没有views目录,用法是Function views 1. Add an import: from my_app import views 2. Add a UR原创 2018-01-15 13:46:55 · 900 阅读 · 0 评论 -
Python处理mysql特殊字符
有的时候我们会去扫表,然后拿出扫的结果再到另一张表里去查信息。比如下面一段index_sql_str = "select %s from user where %s = %d" % ("social_id", "user_id", u_id) db_cursor.execute(index_sql_str) rows = ['"' + row[0] + '"' for row原创 2018-01-31 11:08:51 · 2644 阅读 · 0 评论 -
python优化分析工具
除了上次介绍的内置的一些方法外内置方法和系统方法 还有很多工具line_profilerpip install line_profiler安装 需要在被测的函数前加上@profile,还是用上次的堆排程序试一下wujingcideMacBook-Pro:test wujingci$ kernprof -l -v dp.pyWrote profile results to dp原创 2018-02-01 01:08:23 · 608 阅读 · 0 评论 -
关于python kafka一些配置
Kafka是我们常用的消息队列,python kafka库可以实现Producer和Comsumer,相关资料一查一大把,我们今天来讲讲一些特别的配置和注意事项Producerapi_version,使用的时候最好指定api_version,(0,9)或者(0,10)之类的,不然容易发生编码错误传不出去producer.send()时候可以带上key 这个optional的参数,效果是原创 2018-01-25 01:02:46 · 2555 阅读 · 0 评论 -
python time和datetime
python中我们很常用到time和datetime这两个库,包括但不限于时间戳的转换,程序运行时间的计算。 这两个类在python doc中是处于不同模块的 time属于Generic Operating System Services,与os,io等并列 datetime属于Data Types,与collections,array,enum等并列 单从这样看,time应该是属于系统上原创 2018-01-27 12:53:09 · 278 阅读 · 0 评论 -
python 中utf8,u_str的转换
先来介绍下utf8的来历 最早英文用的是ASCII码表示大小写字母和符号已经足够了,但是扩展到其他语言,中文,法语这种则不够,所以产生了unicode编码。 用unicode其实就是ASCII码的扩展,增加了几位用以表示不同语言中的不同字符,它是一种符号集,规定了符号的二进制值,却没有规定存储格式 utf-8就是unicode的一种基本实现方式,它是一种变长的存储实现方式,可以避免英文字符占原创 2018-02-04 01:16:25 · 1976 阅读 · 0 评论 -
Python import和目录结构设计
Python中经常要使用import导入不同层级的包,python不像JAVA从根目录写一个长路径最后打包,因为python是轻量级的,有时希望每个组件可以单独运行调试,因此没有打包的概念,这反而导致了import比较混乱。。首先,要将一个目录作为一个包存在,必须要添加__init__.py文件,这样这个目录才会作为包存在总体来说就三种情况,做了个小例子,我的目录结构如下,有pyc是因为我原创 2018-01-20 12:12:31 · 780 阅读 · 0 评论 -
python 装饰器/Cprofile计算函数执行时间
用简单的堆排序来查看这些工具 今天先看一些内建工具自己写一个装饰器注释掉的部分是将尾递归省略掉的方法,理论上会提升效率,我用来做比较的wujingcideMacBook-Pro:test wujingci$ cat dp.py# encoding: utf-8import randomfrom functools import wrapsimport timede原创 2018-01-29 02:09:54 · 1109 阅读 · 0 评论 -
python lower方法的局限性
日常工作中,往往有很多大写转小写的需求。 比如设计es索引的时候往往会把大小写相同的分词归在一个索引内,这样请求输入也会强制转成小写再去查询。 python2.7因为其对unicode的不友好,导致lower()这个方法有一定的局限性,尤其是处理特殊unicode字符的时候。看下面的例子>>> "AEIOU".lower()'aeiou'>>> "Æ...原创 2018-06-18 19:40:49 · 1597 阅读 · 0 评论