python
文章平均质量分 64
yangxiaodong88
让编程更简单,用好轮子,创造轮子。
展开
-
python操作RabbitMQ
一、安装RabbitMQhttps://blog.csdn.net/yangxiaodong88/article/details/83088569二 用Python操作 RabbitMQRabbitMQ 是一个在AMQP 基础上完成的, 可复用的企业消息系统。他遵循Mozilla Public License开源协议。2.1 基于queue实现的消费者生成者模型import Queue...原创 2018-10-30 08:55:38 · 464 阅读 · 0 评论 -
Python redis 基础知识学习 hashs(四)
概述:我们可以将Redis中的Hashes类型看成具有String Key和String Value的map容器。所以该类型非常适合于存储值对象的信息。如Username、Password和Age等。如果Hash中包含很少的字段,那么 该类型的数据也将仅占用很少的磁盘空间。每一个Hash可以存储4294967295个键值对。相关命令列表: 命令原型 时间复杂度 命令...原创 2018-06-28 16:42:15 · 225 阅读 · 0 评论 -
Python redis 基础知识学习 set(三)
概述:在Redis中,我们可以将Set类型看作为没有排序的字符集合,和List类型一样,我们也可以在该类型的数据值上执行添加、删除或判断某一元素是否存 在等操作。需要说明的是,这些操作的时间复杂度为O(1),即常量时间内完成次操作。Set可包含的最大元素数量是4294967295。和List类型不同的是,Set集合中不允许出现重复的元素,这一点和C++标准库中的set容器是完全相同的。换句话说...原创 2018-06-28 15:41:21 · 497 阅读 · 0 评论 -
Python redis 基础知识学习 list(二)
概述在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的 元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。 List中可以包含的最大元素数量是4294967295。 从元素插入和删除的效率视角来看,如果我们是...原创 2018-06-28 13:26:28 · 181 阅读 · 0 评论 -
Python redis 基础知识学习 string(一)
背景在过去的几年中,NoSQL数据库一度成为高并发、海量数据存储解决方案的代名词,与之相应的产品也呈现出雨后春笋般的生机。然而在众多产品中能够脱颖而出的却屈指可数,如Redis、MongoDB、BerkeleyDB和CouchDB等。由于每种产品所拥有的特征不同,因此它们的应用场景也存在着一定的差异,下面仅给出简单的说明: 1). BerkeleyDB是一种极为流行的开源嵌入式数据库,在...原创 2018-06-27 17:57:09 · 322 阅读 · 0 评论 -
python 递归返回None 解决
今天写了一个递归 return 之前答应出来都是有值的, 调用时候返回值都是None ,很是纳闷 后来找到原因 现在来看下返回None 的代码 def get_end_parent_ele(self, obj): """获取这个id 所在的原始类""" parent_id = obj.parent_id if obj else 0 O...原创 2018-06-04 13:01:47 · 2148 阅读 · 0 评论 -
pandas yield csv 混合使用
背景运维需要压力测试,需要给他生成符合规则的数据。生成几万甚至百万的数据。这么大的数据就要考虑到速度和内存需求啦。pandas 写数据到csv 中data数据中是数组字典的data = { 'username': [i for i in cellphone_func()], 'cellphone_key': [i for i in cellphone_key_f...原创 2018-03-28 18:02:14 · 791 阅读 · 0 评论 -
Python 生成requirements 使用requirements.txt安装类库
在linux 环境下面 1 切换到自己的环境,隔离的虚拟环境或者别处 2 执行 命令 pip freeze > requirements.txt 生成环境中都有的python项目中必须包含一个 requirements.txt 文件,用于记录所有依赖包及其精确的版本号。以便新环境部署。(py4tornado) ➜ SDevelop cat requirements.t...原创 2018-03-21 18:35:31 · 1181 阅读 · 0 评论 -
tornado + celery 实战
前言celery 一般是配合django 使用。和tornado 使用,简直是如虎添翼。 celery 配合tornado 使用。让耗时不需要实时返回值 的操作 放在celery 的服务中执行,比如说一下插入不需要返回值,跟新, 推送。这些不需要返回值可以使用celery 去异步执行,让程序继续往下走。让程序变成非阻塞的。 使用supervisor 进行celery 的监听连接等 cel...原创 2018-03-23 18:17:16 · 4718 阅读 · 0 评论 -
常见知识点学习,问题解决
collections序列中出现次数最多的元素counter()words = ['look', 'into', 'my', 'eyes', 'look', 'into', 'my', 'eyes','the', 'eyes', 'the', 'eyes', 'the', 'eyes', 'not', 'around', 'the','eyes', "don't",...原创 2018-03-06 16:28:59 · 163 阅读 · 0 评论 -
排序
各种排序字典排序创建一个字典还能排序 使用colections 中的orderdDict(),在迭代的时候会保持元素被插入时候的顺序from collections import OrderedDictd = OrderedDict()d['foo'] = 1d['bar'] = 2d['span'] = 3d['grok'] = 4# Outputs "foo ...原创 2018-03-05 11:18:50 · 137 阅读 · 0 评论 -
Python redis 基础知识学习 Sorted-sets(四)
概述:Sorted-Sets和Sets类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中。它们之间的主要差别是Sorted- Sets中的每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。然而需要额外指出的是,尽管 Sorted-Sets中的成员必须是唯一的,但是分数(score)却是可以重复的。 在Sorted-...转载 2018-06-28 17:24:39 · 520 阅读 · 0 评论 -
python 并发学习(基于线程的并行)
比较好的文章http://python-parallel-programmning-cookbook.readthedocs.io/zh_CN/latest/chapter1/index.html#原创 2018-07-04 18:22:26 · 6048 阅读 · 2 评论 -
python 计算时间差,时间加减运算代码
如何方便的计算两个时间的差,如两个时间相差几天,几小时等使用datetime模块可以很方便的解决这个问题,举例如下:import datetimed1 = datetime.datetime(2009, 3, 23)d2 = datetime.datetime(2009, 10, 7)dayCount = (d1 - d2).dayspython计算两个时间之间的秒数import ...原创 2018-09-26 20:33:00 · 18515 阅读 · 0 评论 -
Python 发送邮件
种子灵感http://www.runoob.com/python/python-email.htmlhttps://blog.csdn.net/xiaosongbk/article/details/60142996项目中实际使用发送附件, excel 文件 注意使用 Python 3的环境不会考虑太多 编码转化等问题import smtplibfrom email.mime...原创 2018-09-14 18:01:48 · 345 阅读 · 0 评论 -
tornado 实现 将阻塞函数 改变为非阻塞 助力并发开发(二)
背景上次类似的文章,只是展示了将阻塞函数变为了非阻塞。 今天又有一些领悟。 @run_on_executor 装饰器的作用, 不管是变为非阻塞还可以 像celery 一个执行异步任务。1、 将阻塞函数转非阻塞 函数 并获取到值from tornado.concurrent import run_on_executorimport timeimport tornado....原创 2018-08-24 17:34:53 · 913 阅读 · 0 评论 -
优化过程查看数据库连接 以及查看对应线程
查看数据库连接select * from information_schema.processlist order by Time desc;HOST 字段 后面的端口号很重要通过端口号可以查到 是哪个线程在占用这个连接线程 在程序运行的机器上面 查看进程端口号 查看到相关进程信息 netstat -apn |grep 45392效果tcp 0 ...原创 2018-08-24 11:31:05 · 1157 阅读 · 0 评论 -
python3 async await yield from 异步编程理解
协程进化几个关键词的进化 yield yield from asyncio.coroutine, async await future 这几个词要理解要理解迭代器 生成器 协程之间的区别简单生成器 https://www.python.org/dev/peps/pep-0255/PEP 342 – Coroutines via Enhanced Generators...原创 2018-08-21 10:23:26 · 2487 阅读 · 0 评论 -
python 单例设计模式
单例模式的应用场景所有实例对象封装的数据都相同的场景。这样场景下, 应用单例模式可以减少重复创建对象, 从而节约内存。在数据库的连接过程中, 每次连接过程中所用到的IP, 端口, 用户名 密码等相同。 由于每次单独连接数据库耗时比较长, 通常会先创建一个连接池, 该连接池已经与数据库创建好连接, 其它用户想连接到这个数据库先访问连接池, 由连接池分配连接,从而节约时间。 伪代码 ...原创 2018-08-20 17:05:30 · 423 阅读 · 0 评论 -
python3 asyncio 包的使用
使用asyncio 包进行并发抨击线程的往往是系统程序员,他们考虑的使用场景对一般的应用程序员来说,也许 一生都不会遇到……应用程序员遇到的使用场景,99% 的情况下只需知道如何派生 一堆独立的线程,然后用队列收集结果 ...原创 2018-08-22 10:04:02 · 2448 阅读 · 0 评论 -
tornado 实现 将阻塞函数 改变为非阻塞 助力并发开发
背景python 并发最强大的地方 就是使用协程。 tornado 基于事件循环, 轮询的方式来实现并发, 在阅读本篇文章的时候 默认为你有了一定的 基础知识, 使用过yield yield from async await 并充分理解了。 django 每创建一个连接就会创建一个线程, 这样对服务器的要求比较高, 服务器的压力比较大。 tornado 充分利用协程实现并发, 使用各种...原创 2018-08-19 13:25:04 · 737 阅读 · 0 评论 -
python 并发学习(基于进程的并行)
背景在之前的章节中,我们见识了如何用线程实现并发的应用。本章节将会介绍基于进程的并行。本章的重点将会集中在Python的 multiprocessing 和 mpi4py 这两个模块上。multiprocessing 是Python标准库中的模块,实现了共享内存机制,也就是说,可以让运行在不同处理器核心的进程能读取共享内存。mpi4py 库实现了消息传递的编程范例(设计模式)。简单来说...原创 2018-07-06 16:17:06 · 796 阅读 · 0 评论 -
垃圾回收机制学习记录
垃圾回收机制python中垃圾回收机制是以 引用计数为主, 分代收集为辅。 引用计数的缺陷是循环引用的问题。 在python中, 如果一个引用的计数为0 python 虚拟机就会回收这个对象的内存, 销毁这个对象。class ClassA(): def __init__(self): print 'object born,id:%s'%str(hex(id(...原创 2018-07-18 22:22:58 · 136 阅读 · 0 评论 -
python 基于异步的编程
背景除了顺序执行和并行执行的模型之外,还有第三种模型,叫做异步模型,这是事件驱动模型的基础。异步活动的执行模型可以只有一个单一的主控制流,能在单核心系统和多核心系统中运行。在并发执行的异步模型中,许多任务被穿插在同一时间线上,所有的任务都由一个控制流执行(单一线程)。任务的执行可能被暂停或恢复,中间的这段时间线程将会去执行其他任务。下面的这幅图可以清楚地表达这个概念。 如上图所示, ...原创 2018-07-18 21:32:01 · 5154 阅读 · 0 评论 -
python deque heapq详解
概念deque模块是python标准库collections中的一项,它提供了两端都可以操作的序列,这意味着,在序列的前后你都可以执行添加或删除操作。使用deque(maxlen=N) 构造函数会新建一个固定大小的队列。当新的元素加入并且这个队列已经满的时候, 最老的元素会被替换掉的。from collections import dequeq = deque(maxlen=3)...原创 2018-03-05 09:44:16 · 1319 阅读 · 0 评论 -
pandas 的学习和使用(二)
排序 排名from pandas import Series, DataFrameprint("series 排序")x = Series(range(4), index=['b', 'a', 'c', 'd'])print(x)# series 排序# b 0# a 1# c 2# d 3# dtype: int64print(x.sort_...原创 2018-02-24 14:58:37 · 245 阅读 · 0 评论 -
pandas 的学习和使用(一)
背景学习了 numpy 用pandas这个利器就非常棒了,前提是要学习好numpy 他是一个基础基础学习Seriesimport pandas as pdfrom pandas import Series, DataFramex = Series([1,2,3,4])print(x)print(x.values)print(x.index)x = Ser...原创 2018-02-09 18:04:50 · 544 阅读 · 0 评论 -
python 切片
那些年你忽视的切片知识切片和区间会忽略最后一个元素split_list = [10, 11, 12, 13, 14, 15, 16]print(split_list[:2])# [10, 11]print(split_list[2:])# [12, 13, 14, 15, 16]# 就像下面索引从0 开始一样当只有最后一个位置信息的时候,我们也可以看出切片和区间里有几个元素原创 2018-01-06 16:41:57 · 235 阅读 · 0 评论 -
python 序列 元组
元组 这个被经常忽略的神器元组是不可变的列表,这句话并没有完全概括元组的特点,还有很多有用的特性,在平时编码的时候不应该忽略,还可以用于没有字段名的记录。元组作为记录使用。下面就来看下这个神奇的威力!元组和记录元组中的内个元素都存放了记录中一个字段的数据,要加这个字段的位置。这个位置是比较重要的。 如果把元组当做是一些字段的集合,那么数量和位置信息变得非常重要。元组拆包原创 2018-01-06 14:54:38 · 265 阅读 · 0 评论 -
numpy 基础学习(一)
基本一些概念NumPy的主要对象是同种元素的多维数组。这是一个所有的元素都是一种类型、通过一个正整数元组索引的元素表格(通常是元素是数字)。在NumPy中维度(dimensions)叫做轴(axes),轴的个数叫做秩(rank)。例如,在3D空间一个点的坐标 [1, 2, 3] 是一个秩为1的数组,因为它只有一个轴。那个轴长度为3.又例如,在以下例子中,数组的秩为2(它有两个维度).第一个原创 2018-01-30 22:33:30 · 227 阅读 · 0 评论 -
python 序列
python序列容器序列list tuple collections.deque 以上序列可以存放不同类型的数据扁平序列str bytes bytearry 、memoryview、array.array存放的是值不是引用,只能容纳一种类型容器序列和扁平序列之间的区别容器序列存放的是他们所包含的任意类型的对象的引用, 而扁平存放的是值不是引用。扁平序列其实存原创 2018-01-06 12:57:19 · 328 阅读 · 0 评论 -
centos7 下安装 python3.6.4 安装virtualenv 来隔离python2 和python3 的环境
背景开发使用python3.6.4 但是系统自己带的是2.7 版本的 不仅要安装python3.6 还要将环境隔离开下载安装下载python3.6编译安装 1 、建立一个soft 文件夹 用来存放下载文件 mkdir soft环境准备 yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline原创 2018-01-22 16:33:57 · 3088 阅读 · 0 评论 -
消息推送(python),相对路径等
文章背景做app 消息推送自己写sdk的缘由有些只支持Python2 有些支持Python3 兼容,不支持3 的如果不太复杂就自己根据官方api文档写一个请求的,如果复杂就在直接用sdk ,这样只能用Python3 调用Python2。在很多代码中在Python2 环境中是不报错的但是在Python3中是报错的, 这就牵扯到Python3 Python2 中引入模块的问题; python2,3 引入原创 2017-12-29 11:40:05 · 1460 阅读 · 0 评论 -
numpy 安装
背景这是一个最好的时代,也是最有机遇的时代。从一无所有到翻身改变,学习是捷径的捷径。数据方面我很感兴趣,现在工作中没有用到,但是我想感受下,就学习了。 现在学习数据分析,先从时代背景上来说,这是一个数据的时代,数据的重要性我 就不说了, 每天产生的数据很多,要让这些数据有意义就要学习相关的技术了。发明轮子的活很多人都已经做了。我现在能做的就是先把别人发明的轮子给用好。 个人认为,干技术的一天不原创 2018-01-13 17:21:15 · 344 阅读 · 0 评论 -
python 中异步,并发,多线程,协程的区分等
写这篇的缘由一直以来一直在说异步,并发,多线程,协程等,觉得很高大上,虽然也看过一些文章但是还是并没有真正的理解,并不敏感。可能是自己比较菜,没有开发中去碰触到这些东西了。以前一直觉理我很遥远,现在项目需要我不得不面对。是时候不能回避了,知耻而后勇开干吧。我的困惑这 几个词语是不是有一定的关联性,异步的话就要走多个线程,并发是不是每个链接都是一个线程,协程是不是多线程的一个升级版本。异步是不是同时可原创 2017-12-18 22:55:13 · 6063 阅读 · 3 评论 -
python 协程 在批量插入时候的无能为力
引言需要压力测试需要添加至少500万的用户还有相关信息,目前只操作3各表,插入速度太慢了,插入一万条数据就需要30分钟左右。然后就想到很多办法去优化。首先想到了协程。首先,协程就是解决并发问题的,插入语句是一种IO流操作,想着遇到io流阻塞就会切换这样插入的快一点实验结果表明和不用协程实现插入时间上面区别不大 python 使用协程的程序如下 def add_user(self, numb原创 2017-12-18 16:17:43 · 784 阅读 · 0 评论 -
python random
python random 模块 方法 描述 random.randint(a,b) [a,b] 之间的整数 random.uniform(a,b) [a,b] 之间的浮点数 random.choice(seq) 在序列中随机抽取 random.sample(population, num) 随机num个不重复的元素(结果是数组) random.random原创 2017-12-14 20:14:52 · 302 阅读 · 0 评论 -
python time datetime 使用
结合到自己的项目中使用到的开始的我傻傻分不清楚, 闲言少絮,开始正题 1 业务需求,需要随机获得 十年间隔内任意一天 人的生日 在python sqlalchemy 中birthday是 date格式(2017-12-14) 在python中怎么实现呢? 现在还没有优化的的代码是这样的: @staticmethod def get_birthday():原创 2017-12-14 20:43:37 · 365 阅读 · 0 评论 -
numpy 多位数组的运用
背景写一个脚本读取。csv 文件存入数据库,本来是想使用DictReader 来直接生成字典,sqlalcharm 直接插入数据库,但是由于文件是产品使用,填写,都是英文 列头 看不太明白,行列也不是可以直接使用的设计。如果按照容易插入数据但是 这样使用文档的时候不方便。所以我就转换了一些。御用到了 numpy 多维数组,按照列每列都是一个 数据对象。使用到二维数组,通过坐标来读取下原创 2018-01-16 19:42:33 · 281 阅读 · 0 评论 -
celery 初学(抽筋扒皮二)
写在前面的话这篇文章主要介绍celery 的一个完整使用,还有部署的内容。包括以下几个方面: 1. 建立 celery 的工程文件 2. 使用celery 中的配置文件 3. 使用supervisor 进行部署监控启动开始在知识的海洋里遨游celery 中的一些概念 在程序的运行过程中,我们经常会碰到一些耗时耗资源的操作,为了避免它们阻塞主程序的运行,我们经常会采用...原创 2018-02-08 12:57:28 · 239 阅读 · 0 评论