![](https://img-blog.csdnimg.cn/20200807120951100.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Python
文章平均质量分 66
Python
craftsman2020
技术交流
展开
-
Python asyncio 性能分析
这三个工具对多线程的Python程序的性能剖析支持得都不好,开发者必须想办法分别对线程进行profile,然后再把结果合并。需要注意的是,yappi.set_clock_type函数的参数,如果是cpu,代表统计的是在CPU上执行的时间,如果是wall,代表统计的是持续的时间。但是这玩意对多线程和asyncio的支持并不友好,如果用它对asyncio分析,会发现CPU都耗费在了poll上面,无法确定到底耗费在哪些协程上。你可以按上面这个例子改造你自己多线程程序,然后运行,就会得到如下的分析结果。原创 2023-08-29 11:42:34 · 224 阅读 · 0 评论 -
为什么Windows上的python 2.7在print时需在unicode字符前加一个空格
windows上如果python2.7出现print u'中文' 报错,尝试将代码改为print u' 中文'原创 2023-08-23 18:01:53 · 131 阅读 · 0 评论 -
argparse 模块详解
argparse是一个用来解析命令行参数的 Python 库,它是 Python 标准库的一部分。基于 python 2.7 的stdlib 代码。argparse模块使编写用户友好的命令行界面变得容易。程序定义了所需的参数,而argparse将找出如何从sys.argv(命令行)中解析这些参数。argparse模块还会自动生成帮助和使用消息,并在用户为程序提供无效参数时发出错误。转载 2023-02-27 11:41:55 · 7647 阅读 · 2 评论 -
【已解决】Python3在删除字典元素时提示RuntimeError: dictionary changed size during iteration
Python3在删除字典元素时提示RuntimeError: dictionary changed size during iteration。转载 2023-02-14 14:27:11 · 770 阅读 · 0 评论 -
HTTP长连接---requests的长连接
使用HTTP协议时,为了充分利用资源,经常会用到http的长连接,也就是底层tcp连接的复用。在requests库中,HTTP的长连接是通过Session会话实现的。转载 2022-11-18 18:17:28 · 1234 阅读 · 0 评论 -
python的网络请求库urllib、urllib2、urllib3、request的联系
urllib、urllib2、urllib3、request均能通过网络访问互联网上的资源文件,它们通过使用统一资源定位符(URL)并结合re模块完成很多意想不到的操作。 requests是基于urllib3封装的,继承了urllib2的所有特性,遵循Apache2 Licensed开源协议的HTTP库,支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动响应内容的编码,支持国际化的URL和POST数据自动编码。如他的口号HTTP for Humans所说,这才是给人用的HT原创 2022-11-18 17:23:10 · 3796 阅读 · 3 评论 -
Python3中进行HTTP请求的4种方式
Python3中进行HTTP请求的4种方式原创 2022-11-18 16:48:10 · 1511 阅读 · 0 评论 -
Python中requests模块源码分析:requests是如何调用urllib3的
requests是怎么实现长链接的原创 2022-11-18 15:05:30 · 875 阅读 · 1 评论 -
HTTP Connection 头(header)说明:keep-alive和closer的区别
在http请求时,我们一般会在request header 或 response header 中看到”Connection:Keep-Alive”或 “Connection:close”,这里具体的含义是有关http 请求的是否保持长连接,即链接是否复用,每次请求是复用已建立好的请求,还是重新建立一个新的请求。转载 2022-11-18 10:10:36 · 2937 阅读 · 0 评论 -
requests.session()的用法
requests库的session会话对象可以跨请求保持某些参数,说白了,就是比如你使用session成功的登录了某个网站,则在再次使用该session对象请求该网站的其他网页都会默认使用该session之前使用的cookie等参数。尤其是在保持登陆状态时运用的最多,在某些网站抓取,或者app抓取时,有时强制登陆,有的是不登陆返回的数据就是假的或者说是不完整的数据,那我们不可能去做到每一次请求都要去登陆一下怎么办,就需要用到保持会话的功能了,我们可以只登陆一次,然后保持这种状态去做其他的或者更多的请求。转载 2022-11-17 17:09:29 · 1474 阅读 · 0 评论 -
Requsets库的基本使用
requests.request()可以说是最重要的方法,它可以用method参数通过传递’get’、‘options’、‘head’、‘put’、‘patch’、'delete’来替代后面六种方法。其实,后面的六种方法都是调用的requests.request()原创 2022-11-17 16:50:39 · 678 阅读 · 0 评论 -
requests.get()和requests.session.get()的区别与联系
with sessions.Session() as session: return session.request(method=method, url=url, **kwargs)长连接|短连接|requests.get()|requests.session.get()原创 2022-11-16 14:12:55 · 1759 阅读 · 0 评论 -
python循环引用解决 cannot import partially initialize
python循环引用解决 cannot import partially initialized原创 2022-06-24 14:50:03 · 3942 阅读 · 0 评论 -
PyMySQL 使用笔记
类:Connection用法:执行 pymysql.connect() 得到。而不是构造函数 Connection()。pymysql.connect() 的参数即为 Connection() 构造函数的参数。构造函数: 重要函数2. cursors 模块类 : Cursor使用 connections.Connection.cursor() 得到,而不是这个类的构造函数。connections.Connection.cursor()的参数是 cursor 的类型。 重要函数...转载 2022-06-05 16:56:27 · 139 阅读 · 1 评论 -
解决pymysql不能实时查询最新的数据
出现的问题如上图所示在网上查询到的原因为:InnoDB 的默认隔离级别。它可以防止任何被查询的行被其他事务更改,从而阻止不可重复的读取,而不是 幻读取。它使用中度严格的锁定策略,以便事务内的所有查询都会查看同一快照中的数据,即数据在事务开始时的数据。那么此时问题就找到了,跟当前的事务级别有关系的;当创建查询事务时,事务一直没有进行更新,每次查询到的数据都是之前查询结果的快照。想要解决上述的问题,首先要明白mysql中事务这个概念,本地的mysql数据库是默认安装的,默认存储引擎是(InnoDB),事务隔离级原创 2022-06-05 16:40:50 · 1332 阅读 · 0 评论 -
使用paramiko防止SFTP/SSH会话超时
使用paramiko连接服务器,上传/下载等相关操作服务器的会话超时设置为5分钟,当sftp一段时间没有交互之后,会出现会话超时,此时在put/get/stat等一切操作时,就会处于等待状态,并不会抛出任何异常。为了解决这个问题,我认为激活keep alive将是最好的选择,所以我在传输上使用"set_keepalive"将其设置为60秒原创 2022-04-15 17:46:00 · 3128 阅读 · 0 评论 -
python requests timeout详解
- 连接超时: 指的是客户端实现到远端机器端口的连接时,等待的秒数- 读取超时:指的是客户端等待服务器发送请求的时间。(特定地,它指的是客户端要等待服务器发送字节之间的时间。在 99.9% 的情况下这指的是服务器发送第一个字节之前的时间) 读取超时是没有默认值的,如果不设置,程序将一直处于等待状态。转载 2022-04-15 16:08:15 · 11883 阅读 · 0 评论 -
python获取系统环境变量|os.environ|os.putenv|cmd添加环境变量
python获取系统环境变量|os.environ|os.putenv|cmd添加环境变量原创 2022-02-08 12:53:36 · 7153 阅读 · 0 评论 -
python生成requirements.txt的两种方法
python项目如何在另一个环境上重新构建项目所需要的运行环境依赖包?使用的时候边记载是个很麻烦的事情,总会出现遗漏的包的问题,这个时候手动安装也很麻烦,不能确定代码报错的需要安装的包是什么版本。这些问题,requirements.txt都可以解决!生成requirements.txt,有两种方式:第一种 适用于 单虚拟环境的情况: :pip freeze > requirements.txt为什么只适用于单虚拟环境?因为这种方式,会将环境中的依赖包全都加入,如果使用的全局环境,则下载的.转载 2022-02-07 21:56:57 · 692 阅读 · 0 评论 -
阿里云服务器安装Python3.8|anaconda
1.操作系统:CentOS 7.7 64位2.下载python安装包wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tar.xz3.解压、配置、编译安装yum install gcc-c++ gcc make cmake zlib-devel bzip2-devel openssl-devel ncurse-devel libffi-devel -y #安装编译工具安装依赖:yum -y install zlib-dev原创 2020-07-18 20:00:22 · 3650 阅读 · 0 评论 -
python对数字的四种取整方法int、math.ceil、round、math.modf
文章目录1. int(): 向下取整; 3.7取3;2. math.ceil(): 向上取整; 3.2取4;3. round(): 四舍五入;4. math.modf(): 取整数部分和小数部分,返回一个元组:(小数部分,整数部分)。注意小数部分的结果有异议1. int(): 向下取整; 3.7取3;2. math.ceil(): 向上取整; 3.2取4;3. round(): 四舍五入;4. math.modf(): 取整数部分和小数部分,返回一个元组:(小数部分,整数部分)。注意小数部分的结果有原创 2021-12-05 22:56:45 · 2621 阅读 · 0 评论 -
Flask|axios使用|Get请求|Post请求|文件上传|base64
文章目录1. axios2. get 请求3. Flask 的 get 请求处理3.1 获取到单个的值3.2 获取get请求的所有参数3.3 将获得的参数转换为字典4. axios 进行 post 请求:4. Flask 几种获取 json data 的方式5. 文件上传的 post 请求6. Flask 获取 file 的方式1. axiosaxios 默认的 Content-Type 请求头是:Content-Type: application/json例如 post 请求中 axios 默认转载 2021-08-08 21:30:30 · 1479 阅读 · 0 评论 -
python|在__del__方法中使用open报错|__del__中使用logging报错
文章目录1. __del__使用open的问题2. 解决方案2.1 方法一2.2 方法二1. __del__使用open的问题在类里面调用__del__方法,使用open()打开文件会报错,如下:代码:# 类里面的部分代码def __del__(self): with open("test2.txt", "rb") as f2: with open("test.txt", "ab") as f1: f1.write(f2.read())运行结果:转载 2021-08-08 20:52:07 · 538 阅读 · 1 评论 -
anaconda版本与python对应关系
python2python3anaconda2/32.7.143.6.55.2.02.7.143.6.45.1.02.7.143.6.35.0.12.7.133.6.25.0.02.7.133.6.14.4.02.7.133.6.04.3.12.7.133.6.04.3.02.7.123.5.24.2.02.7.123.5.24.1.12.7.113.5.14.1.02.7.113.5.14.0.0首先解释一下上表。 anaconda在每次发布新版本的时候都会给python3和python2都发布一个包,原创 2021-07-11 22:35:02 · 1829 阅读 · 0 评论 -
Linux安装anaconda3是否初始化的区别
Linux安装anaconda3提示是否希望安装程序通过运行conda init来初始化Anaconda3?Do you wish the installer to initialize Anaconda3 by running conda init?官方建议的是选yes,那么选择yes和no有什么区别呢?1、选择yes:选择yes的话,bashrc文件中会添加以下内容,这样在打开终端时自动执行conda activate root命令,这样在终端输入python的时候默认是python3(Cent转载 2021-06-30 13:30:27 · 1217 阅读 · 0 评论 -
compileall预编译python代码
文章目录1. pyc文件2. py_compile模块3. compileall模块 批量编译4. 编译sys.path中包含的所有目录5. 在命令行中使用compileall1. pyc文件pyc是一种二进制文件,是由py文件经过编译后,生成的文件, 是一种byte code,py文件变成pyc文件后, 加载的速度有所提高,而且pyc是一种跨平台的字节码, 是由python的虚拟机来执行的生成单个pyc文件。2. py_compile模块python提供了内置的类库来实现把py文件编译为pyc文件原创 2021-07-11 21:17:58 · 1649 阅读 · 1 评论 -
CTP|UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb3 in position 0: invalid start byte
1. 问题对CTP接口返回值解码,报错:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xb3 in position 0: invalid start byte2. 解决CTP接口返回的字符串中有中文,其编码方式非utf-8;所以使用decode(“utf-8”)解码同样无法显示,使用decode(“gb18030”)附录:Python中文编码问题(字符串前面加‘u‘|decode|encode)...原创 2021-07-11 20:54:45 · 973 阅读 · 0 评论 -
redis.exceptions.ConnectionError: Error while reading from socket: (110, ‘Connection timed out‘)
原因:是redis包的问题。health_check_interval在3.x后是可选项。解决办法:初始化 redis 客户端时,添加上 health_check_interval 选项。client = redis.Redis(..., health_check_interval=30)参考:https://github.com/andymccurdy/redis-py/issues/1186#issuecomment-522794165...原创 2021-05-20 19:03:03 · 3198 阅读 · 0 评论 -
python 锁的两种用法
文章目录1.基础用法2.与with搭配的用法程序中锁的作用:在程序中用到多线程,对临界区进行加锁处理以避免出现竞争条件。1.基础用法import threadingvalue_lock = threading.Lock()value_lock.acquire()#需要加锁的代码段value_lock.release()2.与with搭配的用法import threadingvalue_lock = threading.Lock()with value_lock: #需要加锁的代码原创 2021-05-13 20:21:21 · 302 阅读 · 0 评论 -
Python 之 ftplib模块详解
文章目录1. ftp登陆连接2. ftp相关命令操作3. FTP.quit()与FTP.close()的区别4.ftp下载、上传文件4.1 xshell中操作4.2 python中操作5. ftp下载、上传等综合运用ftplib模块常用方法1. ftp登陆连接from ftplib import FTP #加载ftp模块ftp=FTP() #设置变量ftp.set_debuglevel(2) #打开调试级原创 2021-05-09 22:58:08 · 781 阅读 · 0 评论 -
python 使用paramiko模块读取远程文件
import paramikoclient = paramiko.SSHClient()try: client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(host_ip, port, username, password, timeout=5) sftp_client = client.open_sftp() remote_file = sftp_client.open(fi原创 2021-04-30 12:17:34 · 1146 阅读 · 0 评论 -
【redis】 redis.exceptions.ResponseError: DENIED Redis is running in protected mode
文章目录1. 报错2. 原因3. 解决1. 报错r = redis.StrictRedis(host='192.168.3.104', port=6379, password='123456', db=0)在python连接redis时出现下图所示的报错,报错为:redis.exceptions.ResponseError: DENIED Redis is running in protected mode2. 原因复现问题,检测原因,通过telnet命令检测redis端口6379根据错误原创 2021-04-25 08:51:55 · 2217 阅读 · 1 评论 -
【redis】 redis.exceptions.AuthenticationError: Client sent AUTH, but no password is set
文章目录1. 报错2. 原因3. 操作:1. 启动redis服务器.2. 然后启动redis客户端.3. 在redis客户端设置密码:1. 报错在python中连接redis,出现以下报错redis.exceptions.AuthenticationError: Client sent AUTH, but no password is set2. 原因r = redis.StrictRedis(host='192.168.1.101', port=6379, password='123456',原创 2021-04-25 08:40:11 · 5096 阅读 · 0 评论 -
Python3的四舍五入round()函数坑爹?不,更科学!
Python2中,round()的结果就是我们所理解的四舍五入,round(1.5)=2,round(2.5)=3。Python3中,对round()函数有较大改动,例如round(1.5)=2,而round(2.5)却等于2,只有round(2.6)才等于3,这是为什么呢?原来Python2中的round()是四舍五入,而到了3,round()就变成了“四舍六入五成双”。这让我想起了大二时候的大物实验,第一节就讲了计数方法,其中印象最深刻的就是这个“四舍六入五成双”,它的作用是让统计数据更公平,降低原创 2021-04-21 14:51:24 · 1114 阅读 · 0 评论 -
python获取本机IP地址
方法一通常使用socket.gethostname()方法即可获取本机IP地址,但有时候获取不到(比如没有正确设置主机名称)import socket#获取计算机名称hostname=socket.gethostname()#获取本机IPip=socket.gethostbyname(hostname)print(ip)方法二:本方法在windows和linux系统下均可正确获取ip地址import socketdef get_host_ip(): """ 查询本原创 2021-04-21 13:06:58 · 87 阅读 · 0 评论 -
vue+flask 跨域解决
vue+flask 跨域解决1. 问题vue+axios调取接口时出现:response to preflight request doesn’t pass access control check: no ‘access-control-allow-origin’ header is present on the requested resource查了是 跨域问题,找了各种办法,自己加头文件、nginx配置、修改vue config.js等均无效。。2. 临时解决chrome 扩展程序: A原创 2021-04-13 18:42:42 · 904 阅读 · 0 评论 -
Python3中bytes类型转换为str类型
Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分。这篇文章主要介绍了Python3中bytes类型转换为str类型的相关知识,需要的朋友可以参考下Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes,你不能拼接字符串和字节流,也无法在字节流里搜索字符串(反之亦然),也不能将字符串传入参数为字节流的函数(反之亦然)。问题背景基原创 2021-03-15 11:34:50 · 427 阅读 · 0 评论 -
Python TimedRotatingFileHandler 多进程环境下的问题和解决方法(如flask logging按时间自动切割)
Python 自带了一个 handler 可以实现每天自动切割日志文件的功能(其实支持各种按时间切割的方法,不过按日期切割是最常用的一种)。切割 这件事的触发和执行逻辑可以从 BaseRotatingHandler(logging.FileHandler) 里看到:def emit(self, record): """ Emit a record. Output the record to the file, catering for rollover as described转载 2021-02-07 18:04:17 · 3830 阅读 · 2 评论 -
python Flask logging日志报错“另一个程序正在使用此文件,进程无法访问”
文章目录1. 问题2. 代码示例3. 原因4. 解决1. 问题python Flask logging日志报错“另一个程序正在使用此文件,进程无法访问”2. 代码示例#!/usr/bin/env python# -*- coding: utf-8 -*-# @Author: craftsmanimport osimport datetimeimport decimalimport loggingfrom logging.handlers import TimedRotatingF原创 2021-01-22 10:24:46 · 3874 阅读 · 3 评论 -
Python之cmd模块
1#!/usr/bin/env python# -*- coding: utf-8 -*-# @Author: craftsman2020from __future__ import print_functionimport sysimport cmdfrom paramikotools import SSHConnectionVERSION = int(sys.version_info[0])TRADERS = {'a': 'aaa', 'b': 'bbb'}RUN_DICT原创 2021-01-21 12:06:08 · 3776 阅读 · 0 评论