Python 学习记录
Python 技术学习交流
王哈哈er
廉颇老矣,能饭!
展开
-
只需几行代码,即可实现多线程和多进程操作
concurrent.futures 是标准库里的一个模块,它提供了一个实现异步任务的高级 API 接口。本文将通过一些代码例子来介绍这个模块常见的用法。ExecutorsExecutor 是一个抽象类,它有两个非常有用的子类–ThreadPoolExecutor 和 ProcessPoolExecutor 。从命名就可以知道,前者采用的是多线程,而后者使用多进程。下面将分别介绍这两个子类,...转载 2019-12-11 14:31:29 · 727 阅读 · 0 评论 -
python 异步执行装饰器
使用多线程写一个简单的异步调用装饰器:async_call.py:import threadingdef myasync(f): def wrapper(*args, **kwargs): thr = threading.Thread(target = f, args = args, kwargs = kwargs) thr.start() ...原创 2019-12-03 15:11:47 · 1772 阅读 · 1 评论 -
如何回收 Python 中的“垃圾”?
本文不再更新,最新版本请查看:https://error.work/python/48.html前言对于 python 来说,一切皆为对象,所有的变量赋值都遵循着对象引用机制。程序在运行的时候,需要在内存中开辟出一块空间,用于存放运行时产生的临时变量;计算完成后,再将结果输出到永久性存储器中。如果数据量过大,内存空间管理不善就很容易出现OOM(out of memory),俗称爆内存,程序可...转载 2019-12-02 11:21:50 · 686 阅读 · 0 评论 -
python进度条tqdm的介绍及常用方法
原文:python进度条tqdm的介绍及常用方法一、介绍Tqdm 是一个快速,可扩展的 Python 进度条,可以在 Python 长循环中添加一个进度提示信息,用户只需要封装任意的迭代器 tqdm(iterator)。总之,它是用来显示进度条的,很漂亮,使用很直观(在循环体里边加个tqdm),而且基本不影响原程序效率。名副其实的“太强太美”了!这样在写运行时间很长的程序时,是该多么舒服啊!...原创 2019-05-14 09:56:32 · 2008 阅读 · 0 评论 -
Python 连接 Oracle 数据库时遇到的坑及解决办法
本文不再维护,原文:https://error.work/content/14/问题一:Python 连接 Oracle 数据库时报错 64-bit Oracle Client library cannot be loaded: "F:\app\Administrator\product\11.1.0\db_1\BIN\oci.dll原因:Python3.5 版本 64 位 oracle1...转载 2019-04-26 14:01:58 · 3478 阅读 · 2 评论 -
Pyinstaller 打包 python变为exe 在 windows下免 python 环境运行 python
python 程序编写完之后需要进行打包发布在 windows 下没有 python 环境运行 python 程序怎么办呢?可以打包成 exe,直接在 windows 下运行目前打包工具主要有三种cx_FreezePyInstallerpy2exe它们之间的比较http://www.py2exe.org/index.cgi/FAQhttp://www.pyinstaller....转载 2019-04-18 11:13:10 · 1336 阅读 · 0 评论 -
python3 插入 mysql 时内容带有特殊字符处理
插入mysql时,如果内容中有引号等特殊符号,会报错,简单的解决方法可以用反斜杠转义,还可以用 pymysql 的方法(pymysql.escape_string)自动转义:使用举例:c = ''' 北京时间9月20日晚间9点半,智能供应链服务供应商百世集团将在<a class="wt_article_link" "WeiboCard.show(2125973432,'tech',th...转载 2019-04-15 16:44:05 · 3876 阅读 · 0 评论 -
pip批量导出安装包,批量安装各种包
freeze 查询各种安装包的版本, > 重定向到requirements文本,文本名字可随意命名pip freeze > requirements.txt 安装导出的各种安装包, -r 表示逐行读取安装pip install -r requirements.txt查看Python已安装的模块1.Windows或Linux控制台下查看模块pip list该命令查看...原创 2019-04-15 16:19:54 · 2877 阅读 · 0 评论 -
Python 高效操作文件
在这个世界上,人们每天都在用 Python 完成着不同的工作。而文件操作,则是大家最常需要解决的任务之一。使用 Python,你可以轻松为他人生成精美的报表,也可以用短短几行代码快速解析、整理上万份数据文件。via:https://www.zlovezl.cn/articles/three-tips-on-writing-file-related-codes/建议一:使用 pathlib 模块...转载 2019-06-18 15:47:38 · 867 阅读 · 0 评论 -
Python yield 使用浅析
您可能听说过,带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ?我们先抛开 generator,以一个常见的编程题目来展示 yield 的概念。如何生成斐波那契數列斐波那契(Fibonacci)數列是一个非常简单的递归数列,除第一个和第二个数外,任意一个数都可由前两个数相加得到。用计算机程序输出斐波那契數列的前 N 个数是一个非常...转载 2019-06-05 16:48:53 · 673 阅读 · 0 评论 -
Python 学习笔记_基础记录
import functoolsimport loggingimport os, time, randomimport tracebackimport datetimefrom multiprocessing import Process, Poollogging.basicConfig(level=logging.WARNING)# 多进程# Python的os模块封装了常...原创 2019-03-22 13:49:30 · 686 阅读 · 0 评论 -
Python 学习笔记_函数的可变参数、关键字参数、命名关键字参数、参数组合
一、可变参数在 Python 函数中,可以定义可变参数。顾名思义,可变参数就是传入的参数个数是可变的,可以是 1 个、2 个到任意个,还可以是 0 个。我们以数学题为例子,给定一组数字 a,b,c……,请计算 a2 + b2 + c2 + ……。要定义出这个函数,我们必须确定输入的参数。由于参数个数不确定,我们首先想到可以把 a,b,c ……作为一个 list 或 tuple 传进来,这样,...转载 2019-01-24 16:46:34 · 1081 阅读 · 0 评论 -
Python 学习笔记_ list 和 tuple
一、listPython 内置的一种数据类型列表:list。list 是一种有序的集合,可以随时添加和删除其中的元素。list 是一个可变的有序表,所以,可以往 list 中追加元素到末尾:&gt;&gt;&gt; classmates.append('Adam')&gt;&gt;&gt; classmates['Michael', 'Bob', 'Tracy', 'Adam']也...转载 2019-01-24 15:08:27 · 697 阅读 · 0 评论 -
Python 学习笔记_格式化字符串的两种方式
我们经常会输出类似 '亲爱的 xxx 你好!你 xx 月的话费是 xx,余额是 xx ’ 之类的字符串,而 xxx 的内容都是根据变量变化的,所以,需要一种简便的格式化字符串的方式。一、%在Python中,采用的格式化方式和C语言是一致的,用%实现,举例如下:>>> 'Hello, %s' % 'world''Hello, world'>>> 'Hi...转载 2019-01-24 14:50:35 · 825 阅读 · 0 评论 -
Python 学习笔记_转码问题的解决方法:“ignore”
若希望将 Json 文件转化为 python 形式的 Unicode 字符串,可以如下操作:unicodestr = json.loads(html.decode(&amp;quot;gbk&amp;quot;))但在实际开发中,这种办法时常会出现异常:UnicodeDecodeError: 'gbk' codec can't decode byte 0xaa in position 205: illegal multiby...转载 2019-01-24 14:27:48 · 887 阅读 · 0 评论 -
Python 跳过前几行读取文件内容 itertools(islice)使用
Python 读取文件时,经常需要跳过第一行读取文件内容。比较容易想到是为每行设置一个 line_num ,然后判断 line_num 是否为1,如果不等于 1 ,则进行读取操作。相应的 Python 代码如下:input_file = open("test.csv") line_num = 0 for line in islice(input_file, 1, None): ...转载 2019-01-16 10:45:30 · 6493 阅读 · 0 评论 -
Python strip() 函数 去空格 \n \r \t 函数的用法
在 Python 中字符串处理函数里有三个去空格(包括 ‘\n’, ‘\r’, ‘\t’, ’ ') 的函数:strip 同时去掉左右两边的空格lstrip 去掉左边的空格rstrip 去掉右边的空格具体示例如下:>>> a=" gho stwwl ">>> a.lstrip() 'gho stwwl '>>> a.rstri...转载 2019-01-02 13:59:57 · 21484 阅读 · 0 评论 -
win10 安装 scrapy 报错 error: Microsoft Visual C++ 14.0 is required Get it with Microsoft V++ Comp……
近期准备学习 python 爬虫,安装 scrapy 报错首先是 pip install scrapy,报错 error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-bui...转载 2018-12-26 14:08:10 · 1704 阅读 · 0 评论 -
Python 代码性能优化技巧
代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构、优化、扩展以及文档相关的事情通常需要消耗 80% 的工作量。优化通常包含两方面的内容:减小代码的体积,提高代码的运行效率。一、改进算法,选择合适的数据结构一个良好的算法能够对性能起到关键作用,因此性能改进的首要点是对算法的改进。在算法的时间复杂度排序上依次是:O(1) ...转载 2018-12-21 11:16:55 · 857 阅读 · 0 评论 -
python 中split()使用多符号分割
调用re模块中的split()函数可以用多个符号进行分割In [1]: import reIn [2]: words = '我,来。上海?吃?上海菜'In [3]: wordlist = re.split(',|。|?',words)In [4]: print(wordlist)output:['我', '来', '上海', '吃', '上海菜']via:https://...转载 2018-12-20 14:46:31 · 9451 阅读 · 2 评论 -
Pycharm 配置 SVN 教程及配置 svn 后找不到 subversion 子菜单的解决办法
一、配置教程打开 pycharm,settings —>如图,默认 General 中是有勾选选项的,全部取消,按 OK点击菜单 VCS -> Browse VCS repository -> Browse Subversion Repository会弹出 SVN respositorys ,点击 + 新建。在弹出的 New Reposito...原创 2018-12-04 16:37:05 · 4845 阅读 · 2 评论 -
Python 字符串按固定长度拆分
现需要将一个字符串按照每两个长度分隔,更改成一定格式如: mac = ’902B345FB021’ 改为 mac = ’90-2B-34-5F-B0-21’方法一:A = open('mac.txt','r') a = A.readlines() for aa in a: b = list(aa.strip()) c='' for i in range(len...转载 2018-11-07 15:47:35 · 5381 阅读 · 0 评论 -
学习 Python3 使用 DataX 读取 csv 文件,写入另一个 csv 文件
DataX 简介DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。FeaturesDataX本身作为数据同步框架,将不同数据源的同步抽象为从源头数据源...原创 2018-11-01 15:44:45 · 11220 阅读 · 4 评论 -
Python 读取 csv 文件忽略引号中字段的逗号
如题,使用 Python 处理 csv 文件,之前是这么处理的:str = '飞机,火车,汽车'rel = str.split(',')> ['飞机','火车','汽车']一般情况下是正常的,但是如果在某个文本字段中带有逗号,处理就会有问题:str = “飞机,‘火车,book’,汽车"rel = str.split(',')> ['飞机','火车','book','汽...原创 2018-10-31 13:42:44 · 10112 阅读 · 0 评论 -
使用 SSCursor (流式游标) 解决 Python 使用 pymysql 查询大量数据导致内存使用过高的问题
Python 导数据的时候,需要在一个大表上读取很大的结果集。如果用传统的 fetchall() 或 fetchone() 方法,都是先默认在内存里缓存下所有行然后再处理,大量的数据会导致内存资源消耗光,内存容易溢出。解决的方法:使用 SSCursor (流式游标),避免客户端占用大量内存。(这个 cursor 实际上没有缓存下来任何数据,它不会读取所有所有到内存中,它的做法是从储存块中读...原创 2018-10-30 17:41:58 · 12966 阅读 · 1 评论 -
Python 中设置 MongoDB 自增字段
MongoDB 没有像 SQL 一样有自动增长的功能, MongoDB 的 _id 是系统自动生成的 12 字节唯一标识。但在某些情况下,我们可能需要实现 ObjectId 自动增长功能。由于 MongoDB 没有实现这个功能,我们可以通过编程的方式来实现,以下我们将使用 Python 在 counters 集合中实现_id字段自动增长。创建 counters 集合,序列字段值可以实现自动...原创 2018-10-30 10:38:17 · 3551 阅读 · 0 评论 -
Python 使用 PyMysql、DBUtils 创建连接池,提升性能
个人 Python 学习记录Python 使用 PyMysql连接数据库,DBUtils 连接池使用简单例子Python 编程中可以使用 PyMysql 进行数据库的连接及诸如查询/插入/更新等操作,但是每次连接 MySQL 数据库请求时,都是独立的去请求访问,相当浪费资源,而且访问数量达到一定数量时,对 mysql 的性能会产生较大的影响。因此,实际使用中,通常会使用数据库的连接池技术,来访...原创 2018-10-26 13:47:11 · 9429 阅读 · 0 评论 -
python3 多线程 (threading) + 锁 (Lock) + 控制线程数量 (Semaphore) 的实例
学习记录:python3 多线程 (threading ) + 锁 (Lock) + 控制线程数量 (Semaphore) 的实例import threadingimport timedef sub(num): global count lock.acquire() #上锁,第一个线程如果申请到锁,会在执行公共数据的过程中持续阻塞后续线程 ...原创 2018-10-15 17:51:38 · 7351 阅读 · 0 评论 -
Python 操作 mongodb 亿级数据量使用 Bloomfilter 高效率判断唯一性 例子
工作需要使用 python 处理 mongodb 数据库两亿数据量去重复,需要在大数据量下快速判断数据是否存在参考资料:https://segmentfault.com/q/1010000000613729网上了解到 Bloom Filter ,Bloom filter 是由 Howard Bloom 在 1970 年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素...原创 2018-09-27 11:39:34 · 2808 阅读 · 0 评论 -
windows下python3.7安装pybloom报错解决办法
最近在学习Python,当然就学到了布隆过滤器pybloomfilter,然而安装的过程很曲折,Bloom Filter实际上是由一组哈希函数和一个字节列表组成. 详细介绍可以参考百度百科安装过程错误及解决办法:windows下python3.7安装pybloom报错:error: Setup script exited with error: Microsoft Visual C++...原创 2018-09-27 10:37:41 · 5567 阅读 · 4 评论 -
CentOS 6.5 升级 Python 2.7教程
CentOS 6.5 中预安装了 Python-2.6.6,其与比较新的 Python-2.7.9 (CentOS 7预装版本) 主要区别在于新版本的Python导入了更丰富的模块功能。对于初学者而言这一般不会有太大的影响,相对而言这些新模块在某些特定的编译环境下却是不可或缺的。例如:使用Devstack all-in-one模式进行安装OpenStack开发调试平台,需要Python-2.7及以...转载 2018-04-14 19:00:56 · 734 阅读 · 0 评论 -
windows下Python安装pymysql
# windows下Python安装pymysql# 从github 下载pymysql 安装包,下载地址:https://github.com/PyMySQL/PyMySQL# 解压下载文件,不用打开python交互界面,在cmd中cd到解压文件所在目录# 运行 python setup.py install# 打开python交互界面,# 运行 import pymysql...转载 2018-09-05 09:25:54 · 5484 阅读 · 1 评论 -
python报错:pymongo.errors.CursorNotFound: Cursor not found
python报错:pymongo.errors.CursorNotFound: Cursor not found背景:从数据库中取得所有数据 db['test'].find({},{_id:0}),然后对结果进行for循环demos = db['demo'].find({},{"_id": 0})for cursor in demos: do_something(...转载 2018-09-21 16:51:47 · 7188 阅读 · 0 评论 -
Python 内存分配时的小秘密
Python 中的 sys 模块极为基础而重要,它主要提供了一些给解释器使用(或由它维护)的变量,以及一些与解释器强交互的函数。本文将会频繁地使用该模块的 getsizeof() 方法,因此,我先简要介绍一下:该方法用于获取一个对象的字节大小(bytes)它只计算直接占用的内存,而不计算对象内所引用对象的内存这里有个直观的例子:import sysa = [1, 2]b = [a,...原创 2019-09-06 13:27:39 · 660 阅读 · 0 评论 -
优雅地记录Python程序日志二:模块组件化日志记录器
转载自 州的先生博客 :https://zmister.com/archives/217.htmllogging的模块组件化在上一篇文章【优雅地记录Python程序日志:logging模块简介】中,我们介绍了 Python 的内置模块 logging 的使用,通过短短的几行代码我们就实现了一个日志记录器。import logginglogging.basicConfig(level=lo...转载 2019-09-17 15:42:40 · 756 阅读 · 0 评论 -
优雅地记录Python程序日志一:logging模块简介
转载自 州的先生博客 :https://zmister.com/archives/213.html前言在使用 Python 编写程序的过程中,我们经常使用 print() 函数打印一些信息到控制台,方便的查看结果和一些调试信息,以判断程序的运行是否正常。print() 确实是方便和易用,但是也有一些缺点,比如打印出来的信息不能保存,再次运行程序时,之前打印出来的结果就被清空了。而对于一些...转载 2019-09-17 15:35:43 · 703 阅读 · 0 评论