
python
文章平均质量分 60
码码更快乐
分享即快乐
展开
-
python进程内存占用持续增高排查经验分享
一般导致此问题的几种code方式1、创建全局变量,如list或者dicti类型,一直向里面塞数据,未释放;创建类变量,类只创建一次实例,向类变量中无限塞数据2、循环引用,自己实现了__del__方法,未将创建的资源释放掉,python不会自动识别释放掉这部分资源排查此类问题无好的方式,需要借助工具pyrasite进行分析,此工具可以结合其余的辅助插件mem_top插件介绍:refs回显信息: 占用内存最大的topN变量中的元素个数bytes回显信息: 占用内存最大的top...原创 2020-09-17 16:42:07 · 7549 阅读 · 1 评论 -
Subprocess使用总结
Subprocess.Popen使用安全性要比python再带commands强太多,Popen可以对参数进行安全校验,直接上代码# -*- coding: utf-8 -*-import subprocessimport errnodef ssh_host(ip="", password="test123"): args = "ssh root@%s" % ip ...原创 2020-03-23 12:02:33 · 1225 阅读 · 0 评论 -
API 校验与失效策略
数据接口API简易校验策略Client生成tokenimport hashlibimport stringimport timefrom urllib.parse import quoteimport requestshost = 'http://0.0.0.0:3000'app_key = '' # 对应的用户key,作为API的参数进行传递secret_k...原创 2019-12-31 15:11:18 · 1088 阅读 · 0 评论 -
ES单条数据录入操作
录入数据时先在库里进行查询,如果数据存在的话,进行更新数据;如果库里面此条数据不存在的话,进行插入数据 以下是封装的完整代码可以参考from elasticsearch import Elasticsearchurl = 'http://%s:%s/' % ('ip', 'port')ES = Elasticsearch(url)query = { "query":...原创 2018-12-25 11:11:14 · 2619 阅读 · 0 评论 -
12306自动抢票软件
一、说明12306目前反爬虫手段做的越来越牛逼了,一旦检测到,直接就封号了或者很容易导致登录失败,必须更换代理服务器才能登录,所以做测试的时候一定要小心,要先把代理IP池搞好,再做测试。二、代理IP池1、获取代理IP途径,获取代理IP链接,记得将ip、端口、协议类型都获取下来,存放到一个文本中 2、获取的代理IP可能不存活,如果想验证IP的存活性的话,可以使用nmap进行验证,...原创 2018-12-18 13:45:27 · 3046 阅读 · 0 评论 -
python链家爬虫
1、爬虫code# coding=utf-8import requestsimport reimport pymysqldef get_info(url): response = requests.get(url) response.encoding = 'utf-8' title_add = r'alt="(.*?)" data-apart-layout...原创 2018-12-18 11:35:54 · 697 阅读 · 0 评论 -
python爬虫新浪微博
一、新浪微博全栈爬虫先不扯皮,直接上获取数据效果图爬虫策略:递归获取每个用户的粉丝用户id,想要获取多少用户id,则可以获取多少;利用获取的用户id再获取每个用户的所有数据 例如爬黑猫警长GIAO的一条微博所有评论爬虫策略:进入手机端找到微博对应的微博id,进行爬虫,利用如下方式组合成url,进行爬虫url组合方式:'https://m.weibo.cn/commen...原创 2018-12-18 11:16:48 · 1601 阅读 · 0 评论 -
Flask实现异步非阻塞
1、简介 给大家先说明一下,什么是异步非阻塞。 异步非阻塞:说白了就是server端开启进程,client端同时向server发起多个请求,server端在处理请求的时候,不用等一个请求处理完了,再处理另外一个请求,而是同时尽量多的处理接受到的请求。2、安装库pip install geventpip install gevent-websocket...原创 2018-12-26 16:27:42 · 5300 阅读 · 1 评论 -
request爬虫文件方式
import requestsheaders = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'}data = { 'docIds': '532bd8e...原创 2018-12-20 16:29:27 · 430 阅读 · 0 评论 -
celery 使用总结
1、推荐查看链接 celery详解 本人借鉴上面链接,成功配置好celery异步任务,感觉一些点总结的还算可以2、个人celery配置config# -*- coding: utf-8 -*-from kombu import Queue, Exchange# 设置Broker和backend# BROKER_URL = 'redis://i...原创 2018-11-29 19:08:28 · 1498 阅读 · 1 评论 -
requests proxy使用
最近在通过代理连接ES数据库时,一直报错requests.packages.urllib3.exceptions.ProxySchemeUnknown: Not supported proxy scheme socks5from elasticsearch import Elasticsearch, RequestsHttpConnectionclass MyConnection(Re...原创 2019-01-28 15:37:29 · 3018 阅读 · 1 评论 -
tornado+elasticsearch web API
1、简介 最近使用tornado实现了一个对接ES库的API接口,tornado的优势在此不做讲解下面分享一下核心代码,方便后面使用tornado讲解推荐博客2、codeimport timeimport tornadoimport tornado.ioloopimport tornado.webfrom tornado.escape import json_enco...原创 2019-01-28 19:09:48 · 1223 阅读 · 1 评论 -
python 上下文管理器
上下文管理器在使用Python编程中,可以会经常碰到这种情况:有一个特殊的语句块,在执行这个语句块之前需要先执行一些准备动作;当语句块执行完成后,需要继续执行一些收尾动作。例如:当需要操作文件或数据库的时候,首先需要获取文件句柄或者数据库连接对象,当执行完相应的操作后,需要执行释放文件句柄或者关闭数据库连接的动作。又如,当多线程程序需要访问临界资源的时候,线程首先需要获取互斥锁,当执行...转载 2019-04-20 14:13:58 · 199 阅读 · 0 评论 -
python3 asyncio
1、背景 asyncio 库最早由PyPI 提供,在基于Python3.3的环境时就已经能够使用,而在2013年9月20日,正式加入Python3.4官方库大家族,使用coroutine装饰器与yield from配合实现函数的异步;一直到Python3.5才将许多临时API定格下来,虽然计划是这样的,其实到Python3.6才定格。Python3.6为其加入了async 和aw...原创 2019-03-12 22:08:05 · 2526 阅读 · 0 评论 -
mongoDB 对接python
1、mongo授权详细授权请参见如下文本授权完毕之后请修改mongodb.conf中auth = true,退出重新进入,则创建的用户必须使用密码才可以登录了其中mongodb.conf可以配置日志生成的路径,是否外部主机可以访问等,如果需要配置的话,将里面的127.0.0.1改成0.0.0.0即可2、开启服务ps -ef | grep mongo # 这个是如果已经开启了...原创 2019-02-28 17:58:07 · 249 阅读 · 0 评论 -
python 设计模式-单例模式
单例模式使用场景详解单例模式的优势与劣势这里就不做讲解,主要总结了下python的经常使用场景python类封装-单例模式# 单一类封装,只能创建一个实例class Singleton(object): _instance = None def __new__(cls, *args, **kwargs): if not hasattr(cls, '...原创 2019-03-04 20:48:54 · 274 阅读 · 0 评论 -
python 设计模式-适配器模式
适配器模式(Adapter pattern):是一种结构型设计模式,帮助我们实现两个不兼容的接口之前的兼容;样例:电子商务系统支持不同国家的货币交易,需要一个适配器,将其余的货币转化成一种货币最终进行交易。设计模式一直遵从开放/封闭的原则(open/close principle),开放封闭原则是面向对象设计的的基本原则之一,声明一个软件实体应该对扩展是开放的,对修改则是封闭的。对于一些老...原创 2019-03-05 15:56:53 · 166 阅读 · 0 评论 -
elasticsearch 5.x python2.7调用delete_by_query函数删除失败
问题:最近我在使用elasticsearch 5.1版本,用python调用delete_by_query根据已知条件过滤数据并删除的时候,出现如下问题调用代码:from elasticsearch import ElasticsearchES = Elasticsearch(ES_SEARCH_HOSTURL)ES.delete_by_query(dsl)查看官方网站说...原创 2019-02-28 18:20:11 · 2026 阅读 · 10 评论 -
python 迭代器与生成器
一、迭代器简介:迭代是Python最强大的功能之一,是访问集合元素的一种方式。 迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 迭代器有两个基本的方法:iter() 和 next()。 人工生成迭代器的方式,创建一个类实现内置方法__iter__()和__next__(),其中__iter__()方...原创 2019-02-15 18:16:43 · 195 阅读 · 0 评论 -
python 闭包
闭包定义:在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用,这样就构成了一个闭包优势:内外函数共享变量,节省内存 外函数在调用结束时,会把被内函数调用的变量绑定到内函数上,不会直接释放,加速内函数数据处理速度 方便进行函数式编程,组织代码逻辑缺点:如果不合理的使用闭包,容易造成大量的变量遗留再内存中无法释放,导致内存不足等现象...原创 2019-02-15 14:59:05 · 176 阅读 · 0 评论 -
python实现发送邮件功能
简介:需要调用smtplib库,登录QQ邮箱,进入 设置 页面,选择账户选项,将下图设置成这样,需要发送短信,将短信验证成功的;如果想使用163作为发送邮箱,设置方式同QQ邮箱 序列码记录下载,设置发送邮箱密码的时候要用核心代码如下:import smtplibdef send_mail(content, email): msg_from = 'zz...原创 2019-01-23 15:27:30 · 474 阅读 · 0 评论 -
python 使用pika对接rabbitMQ
1、简易阐述原理原则上,消息,只能有交换机传到队列,就像我们家里面的交换机道理一样。 有多个设备连接到交换机,那么,这个交换机把消息发给那个设备呢,就是根据交换机的类型来定。类型有:direct\topic\headers\fanout fanout:这个就是,所有的设备都能收到消息,就是广播。 此处定义一个名称为'logs'的'fanout'类型的exchange channel.e...原创 2018-11-22 20:18:50 · 2214 阅读 · 0 评论 -
python requests爬虫
1、介绍requests是爬虫的利器,可以设置代理ip,cookies,headers等多种反爬虫手段,过滤数据笨的办法可以使用正则,比较可靠稳定的办法使用xpath,找了一个爬虫腾讯招聘的code简要说下2、代码设置tr标签的属性值:tr[@class='c bottomline'] td[1] 表示第一个td标签 .// : 表示选取当前节点开始匹配,直到匹配到符合条件的...原创 2018-10-30 19:08:48 · 282 阅读 · 0 评论 -
线程池与进程池
1、线程池从Python3.2开始,标准库为我们提供了concurrent.futures模块,它提供了ThreadPoolExecutor和ProcessPoolExecutor两个类,实现了对threading和multiprocessing的更高级的抽象,是使用异步实现,充分利用CPU提高程序执行效率,对编写线程池/进程池提供了直接的支持,而传统的进程池/线程池是使用阻塞式实现的;pyt...原创 2018-08-01 15:03:50 · 258 阅读 · 0 评论 -
pandas 处理CSV大文件
1、pandas操作CSVimport pandas as pddf = pd.read_csv('datas/donations.csv', nrows=10000) # nrows设置读取数据的行数donation_src_table = pd.DataFrame(df, columns=['projectid', 'is_teacher_acct']) # 可以从CSV中提取固...原创 2018-08-03 15:51:51 · 1961 阅读 · 0 评论 -
pandas 清洗Excel数据
使用pandas数据清洗目录使用pandas数据清洗数据表中的重复值 duplicated() drop_duplicated() 数据表中的空值/缺失值 isnull()&notnull() dropna() fillna() 数据间的空格 查看数据中的空格 去除数据中的空格 大小写转换 数据中的异常和极端值 replace()...原创 2018-08-03 17:17:45 · 3227 阅读 · 0 评论 -
python time与datetime时间转化
1、time""" 字符串时间转时间戳 """line = '2018-09-15'time_array = time.strptime(line, '%Y-%m-%d')print(time_array) # time.struct_time(tm_year=2018, tm_mon=9, tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_w...原创 2018-08-01 14:26:28 · 989 阅读 · 0 评论 -
深度学习基础整理
学习深度学习的原因深度学习可以用更多的数据或是更好的算法来提高学习算法的结果。对于某些应用而言,深度学习在大数据集上的表现比其他机器学习(ML)方法都要好。 性能表现方面,深度学习探索了神经网络的概率空间,与其他工具相比,深度学习算法更适合无监督和半监督学习,更适合强特征提取,也更适合于图像识别领域、文本识别领域、语音识别领域等。 为什么深度学习会如此被热衷,因为它不以任何损失函数为特征,...原创 2018-08-28 10:30:13 · 313 阅读 · 0 评论 -
pandas使用总结
说明: pandas主要包含两大数据结构(Series和DataFrame) Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成 Series对象本质上是一个NumPy的数组,因此NumPy的数组处理函数可以直接对Series进行处理。但是Series除了可以使用位置作为下标存取元素之外,还可以使用标签...原创 2018-08-13 15:10:11 · 424 阅读 · 0 评论 -
python redis
1、Redis简要说明 redis是一个key-value存储系统,由C语言编写,支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API;下面介绍下python操作redisRedis的优缺点以及使用场景 Redis详细介绍 Redis对接python操作2、python操作连接操作注意默认情况下,设置的值或取得的值都为byte...转载 2018-10-17 16:59:35 · 158 阅读 · 0 评论 -
python 装饰器、给装饰器传参
1、装饰器专业解释简介:python用特殊的语法来表示装饰器(decorator),这些装饰器可以用来修饰函数。对于受到封装的原函数来说,装饰器能够在那个函数执行之前以及执行完毕之后,分别运行一些附加代码。这使得开发者可以在装饰器里面访问访问并修改原函数的参数及及返回值,以实现约束语义、调试程序、注册函数等目标。个人理解:对原有函数进行二次封装,实现原函数没有的附加功能使用:定义好装饰...原创 2018-10-15 18:29:11 · 2237 阅读 · 0 评论 -
python执行linux命令并返回执行结果
需要得到命令执行的状态则需要判断$?的值, 在Python中有一个模块commands也很容易做到以上的效果看一下三个函数:1). commands.getstatusoutput(cmd) # 此函数也可以执行编译好的文件,cmd='./a.out'用os.popen()执行命令cmd, 然后返回两个元素的元组(status, result),其中 status为int类型,resul...原创 2018-10-12 18:41:21 · 12854 阅读 · 0 评论 -
其余文件调用Django项目自带文件方式
说明:在Django项目app有时想创建别的py文件,调用django项目自带的models.py文件或者settings.py文件等,可以通过如下方式加载import os# python3则不需要加载编码方式import sysreload(sys)sys.setdefaultencoding('utf-8')# 加载项目路径sys.path.insert(...原创 2018-10-12 17:39:30 · 467 阅读 · 0 评论 -
Tkinter定时刷新页面或数据
1、说明 由于tkinter一旦开始执行进入mainloop,就相当于进入一个界面死循环状态,出不来;如果想做定时刷新tkinter界面的控件数据,必须调用tkinter.TK()自带的after函数,这个函数可以设定定时执行某个任务的时间,使用别的python定时执行任务的模块是不行的。2、使用方式 实现一个刷新数据函数调用tkinter.TK()自带的af...原创 2018-10-11 11:47:44 · 34391 阅读 · 7 评论 -
python操作ElasticSearch建立索引并数据入库
1、创建连接对象from elasticsearch import RequestsHttpConnection, Elasticsearchclass MyConnection(RequestsHttpConnection): def __init__(self, *args, **kwargs): proxies = kwargs.pop('proxies'...原创 2018-08-06 13:39:52 · 12848 阅读 · 0 评论 -
图像处理 scikit-image、opencv、dlib简易整理
1、简介scikit-image:skimage包的全称是scikit-image SciKit (toolkit for SciPy) ,它对scipy.ndimage进行了扩展,提供了更多的图片处理功能。它是由python语言编写的,由scipy 社区开发和维护;skimage包由许多的子模块组成,各个子模块提供不同的功能;特点:轻量,易安装,易使用,轻量级opencv:OpenCV用...原创 2018-09-07 17:16:36 · 2856 阅读 · 0 评论 -
ElasticSearch DSL python
SDL常用组合查询注意:1、多条件查询should、must_not、must的使用必须使用bool来进行组合,这三种类型可以相互嵌套,但是里层的嵌套必须使用bool来进行组合嵌套,不可以直接嵌套。2、should、must_not、must如果不嵌套时,属于平级关系,任何一个满足条件即可。3、should、must_not、must中任何一个被嵌套在里层的时候,里面再不能包含qu...原创 2018-09-05 16:41:22 · 2936 阅读 · 0 评论