Python
文章平均质量分 83
MaoningGuan
Python、爬虫、机器学习、物联网、C/C++开发
展开
-
Python CPU密集型对IO密集型 多进程更优于多线程 GIL
转载来源:https://blog.csdn.net/lambert310/article/details/50605748CPU密集型和IO密集型最近在看Python的多线程,经常我们会听到老手说:“python下多线程是鸡肋,推荐使用多进程!”,但是为什么这么说呢?要知其然,更要知其所以然。所以有了下面的深入研究:首先强调背景:1、GIL是什么? GIL的全称是Global Interpreter Lock(全局解释器锁),来源是python设计之初的考虑,为了数据安全所做的决定。2、每个CP转载 2020-10-16 20:57:08 · 1426 阅读 · 0 评论 -
Python的GIL(全局解释器锁)
转载来源:https://blog.csdn.net/weixin_41594007/article/details/79485847在进行GIL讲解之前,我们可以先回顾一下并行和并发的区别:并行:多个CPU同时执行多个任务,就好像有两个程序,这两个程序是真的在两个不同的CPU内同时被执行。并发:CPU交替处理多个任务,还是有两个程序,但是只有一个CPU,会交替处理这两个程序,而不是同时执行,只不过因为CPU执行的速度过快,而会使得人们感到是在“同时”执行,执行的先后取决于各个程序对于时间片资源的争夺转载 2020-10-14 21:54:09 · 242 阅读 · 0 评论 -
深度剖析凭什么python中整型不会溢出
转载来源:深度剖析凭什么python中整型不会溢出前言本次分析基于 CPython 解释器,python3.x版本在python2时代,整型有 int 类型和 long 长整型,长整型不存在溢出问题,即可以存放任意大小的整数。在python3后,统一使用了长整型。这也是吸引科研人员的一部分了,适合大数据运算,不会溢出,也不会有其他语言那样还分短整型,整型,长整型…因此python就降低其他行业的学习门槛了。那么,不溢出的整型实现上是否可行呢?不溢出的整型的可行性尽管在 C 语言中,整型所表示的大转载 2020-09-23 16:38:00 · 237 阅读 · 0 评论 -
正则表达式全集
字符描述\将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“n”匹配字符“n”。“\n”匹配一个换行符。串行“\\”匹配“\”而“\(”则匹配“(”。^匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。$匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。*匹配前面的子表达式零次或多次。例如,...原创 2020-09-03 16:10:37 · 247 阅读 · 0 评论 -
Python 各种集合内置方法的时间复杂度
转载来源:https://blog.csdn.net/Baoli1008/article/details/48059623Python内置方法的时间复杂度本文翻译自Python Wiki本文基于GPL v2协议,转载请保留此协议。本页面涵盖了Python中若干方法的时间复杂度(或者叫“大欧”,“Big O”)。该时间复杂度的计算基于当前(译注:至少是2011年之前)的CPython实现。其他Python的实现(包括老版本或者尚在开发的CPython实现)可能会在性能表现上有些许小小的差异,但一般不超转载 2020-08-25 10:13:50 · 3232 阅读 · 2 评论 -
Python 中的编码与解码
转载来源:https://zhuanlan.zhihu.com/p/382932671、一些基本的概念比特 / bit:计算机中最小的数据单位,是单个的二进制数值 0 或 1字节 / byte:计算机存储数据的单元,1 个字节由 8 个比特组成字符:人类能够识别的符号编码:将人类可识别的字符转换为机器可识别的字节码 / 字节序列解码:编码的反向过程叫解码概述:Unicode 是人类可识别的字符格式;ASCII 、UTF-8 、GBK 等都是机器可识别的字节码格式。我们写在文件中的 py3 代转载 2020-07-16 18:17:56 · 752 阅读 · 0 评论 -
Python 3中 r‘‘, b‘‘, u‘‘, f‘‘ 的含义和编解码问题
字符串前加 r"r"的作用是去除转义字符.即如果是“\n”那么表示一个反斜杠字符,一个字母n,而不是表示换行了。 print('test\n') print(r'test\n')输出:字符串前加 fimport timet0 = time.time()time.sleep(1)name = 'processing' # 以 f开头表示在字符串内支持大括号内的python 表达print(f'{name} done in {time.time() - t0:.2f}原创 2020-07-16 18:08:58 · 1086 阅读 · 0 评论 -
用Python实现微信自动回复消息
问题描述:有时候,我们需要设置微信根据接收到的消息来进行自动回复。现在,大多数的方法是基于itchat模块来实现的,itchat模块是基于网页版微信接口来实现的,但是现在很多微信都被禁止登陆网页版微信了,所以大部分微信现在使用不了于itchat模块。解决方法:对PC微信客户端进行Hook逆向分析,Hook到微信消息,然后与Python程序进行交互,在Python程序中实现微信消息自动回复的逻辑。开源代码和使用教程链接如下:PC微信Hook逆向程序:Hook到微信消息,然后与Python程序进行原创 2020-07-16 15:05:26 · 3421 阅读 · 0 评论 -
Python多线程编程——资源共享
转载来源:https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15%2F13.%E8%BF%9B%E7%A8%8B%E5%92%8C%E7%BA%BF%E7%A8%8B.md问题描述:因为多个线程可以共享进程的内存空间,因此要实现多个线程间的通信相对简单,大家能想到的最直接的办法就是设置一个全局变量,多个线程共享这个全局变量即可。但是当多个线程共享同一个变量(我们通常称之为“资源”)的时候,很有可能产生不可控的结果从而导致程序失效转载 2020-07-15 23:22:16 · 871 阅读 · 0 评论 -
Python的多线程与多进程编程示例
使用示例:多进程:from multiprocessing import Processfrom os import getpidfrom random import randintfrom time import time, sleepdef download_task(filename): print('启动下载进程,进程号[%d].' % getpid()) print('开始下载%s...' % filename) time_to_download = ran原创 2020-07-15 22:38:38 · 191 阅读 · 0 评论 -
向Python类和函数传递不同的参数的区别
实验目的Python中没有指针,但是我们可以探究:1、分别向Python的类传递list,数值,类对象三种参数,然后改变原始参数,观察类参数的值是否会一起发生变化;2、分别向Python的函数传递list,数值,类对象三种参数,然后在函数内部改变参数,观察函数外部原始参数的值是否会一起发生变化;实验代码:class A(object): def __init__(self, parameter): self.test = parameterdef set_to_No原创 2020-07-15 21:35:59 · 846 阅读 · 0 评论 -
Python的re模块的match和fullmatch方法的区别
Python的re模块的match和fullmatch方法的区别:match(pattern, string, flags=0) 用正则表达式匹配字符串 成功返回匹配对象 否则返回Nonefullmatch(pattern, string, flags=0) ,是match函数的完全匹配(从字符串开头到结尾)版本换言之,match从字符串开头开始匹配,匹配到目标的字符串即可成功返回(这个要跟search区分开,search不要求从头开始匹配);import reqq = '18267552原创 2020-07-15 15:28:13 · 7992 阅读 · 0 评论 -
Python学习知识点汇总
Python学习知识点汇总:1、缓存的使用2、Python装饰器的使用3、Python类与继承:实例方法类方法静态方法原创 2020-06-23 19:07:33 · 136 阅读 · 0 评论 -
python类的实例方法、静态方法和类方法区别
转载来源:https://www.jianshu.com/p/212b6fdb2c501、python类的静态方法和类方法区别:先看语法,python 类语法中有三种方法,实例方法,静态方法,类方法。# coding:utf-8class Foo(object): """类三种方法语法形式""" def instance_method(self): print("是类{}的实例方法,只能被实例对象调用".format(Foo)) @staticmeth转载 2020-06-14 17:02:16 · 351 阅读 · 0 评论 -
python路径操作函数使用方法
路径操作函数:在python程序中,关于文件路径的相关函数笔记:os.path.abspath(file):获取os.path.abspath(file)所在的python文件的绝对路径# E:/Python/code/Django/typeidea/typeidea/blog/testpath.pyimport ospath1 = os.path.abspath(__file__)print(path1)print函数输出:E:\Python\code\Django\typeidea原创 2020-06-14 12:58:33 · 822 阅读 · 0 评论 -
Python字典的get()方法使用
Python:字典的get()方法使用:d={'a':2, 'b': 3}dOut[3]: {'a': 2, 'b': 3}d.get('a')Out[4]: 2d.get('c', 5)Out[6]: 5对于:d.get('c', 5)表示:若是字典d中包含键"c",则返回键"c"的键值,若不包含键"c",则返回5。即get()函数的第二个参数设置的就是字典中不包含该键时,get()函数的返回值。若是不设置第二个参数,则默认返回None...原创 2020-06-10 00:23:25 · 14854 阅读 · 1 评论 -
Python的virtualenv模块使用
转载来源:https://segmentfault.com/a/1190000017955152Python的virtualenv模块使用virtualenv为应用提供了隔离的Python运行环境,解决了不同应用间多版本的冲突问题安装virtualenvpip3install virtualenv使用virtualenv$ virtualenv [OPTIONS] DEST_DIR选项:--version 显示当前版本号。-h, --help 显示帮助信息。-v, --.转载 2020-06-09 22:41:50 · 133 阅读 · 0 评论 -
在Windows系统中,如何使用virtualenv模块来创建和管理Python虚拟环境
问题描述:在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4。所有第三方的包都会被pip安装到Python3的site-packages目录下。如果我们要同时开发多个应用程序,例如:使用不同版本的Django来开发不同的Django项目,或者使用不同的Python版本来开发不同的项目,那这些应用程序都会共用一个Python,就是安装在系统的Python 3。如果应用A需要jinja 2.7,而应用B需要jinja 2.6怎么办?这种情况下,每个应用可能需要各自拥有一套原创 2020-06-09 21:32:01 · 174 阅读 · 0 评论 -
PEP 8-Python编码规范整理
转载来源:https://www.jianshu.com/p/e132bea1d2c9PEP 8-Python编码规范官方文档:https://www.python.org/dev/peps/pep-0008/Python编码规范 (PEP 8)要点整理:我是用Python的IDE:pycharm来编写Python代码的,用IDE编写代码有一个好处就是语法高亮,智能提示。Python的代码样式规范称之为PEP 8规范,每次编写代码如果有出现不符合PEP 8规范的话,pycharm就会提示我,就.转载 2020-06-09 19:56:09 · 340 阅读 · 0 评论 -
解决 pipenv 安装第三方库时卡住:更换国内源
解决 pipenv 安装第三方库时卡住的问题:更换国内源解决 pipenv 安装第三方库时卡住的问题:更换国内源0. 参考资料1. 问题描述2. 国...转载 2020-06-08 23:03:25 · 968 阅读 · 0 评论 -
Socket通信随笔
1、当服务器与同一个客户端可以同时建立多个socket,而且每个socket有唯一标识。如python程序1与python程序2同时建立多个socket:实验结果如下:(注意:上面两张图为同一次输出结果,图太大了,分两次截。)分析上面的结果:实验配置:server:python程序1client:python程序2实验过程:在实验中,通过python程序2向python程序1发起socket连接,共发起了3次连接,所以同时建立了3个socket。在pytho.原创 2020-06-03 19:10:08 · 114 阅读 · 0 评论 -
python模拟滑动滑块验证
def get_tracks(self, distance): """ 根据偏移量获取移动轨迹 :param distance:偏移量 :return:移动轨迹 """ # 移动轨迹 tracks = [] # 当前位移 current = 0 # 减速阈值 mid = distance * 4 / 5 # ...原创 2020-05-23 02:28:01 · 6555 阅读 · 2 评论 -
Python如何解决中文乱码
环境配置:windows 10, 64bitAnaconda 3, python 3.71、问题描述:如上图所示,我们从python爬虫得到网页内容,print(req.text)可能会出现中文乱码,其中,req是我们获取到的response,如:req = requests.get(url)。在网上找了挺多方法都不起作用。下面,将通过三种方法来分别解决中文乱码问题。2、问题分析:运行以下python代码:print(req.encoding)print(req.app.原创 2020-05-22 20:09:53 · 4175 阅读 · 0 评论 -
scrapy框架XPATH选择器与正则式使用技巧
代码示例: def parse_item(self, response): item = NewsItem() item['title'] = response.xpath('//h1[@id="chan_newsTitle"]/text()').extract_first() item['url'] = response.url item['text']=''.join(response.xpath('//div[@id="原创 2020-05-20 20:55:59 · 1284 阅读 · 0 评论 -
scrapy框架Pipelines的使用范例
系统环境:Anconda3, windows 10 64bit, Python 3.7Python packages:Python packages:import pymongoimport pymysqlfrom scrapy import Requestfrom scrapy.exceptions import DropItemfrom scrapy.pipelines.images import ImagesPipeline1、MongoDB保存数据Pipeline:.原创 2020-05-17 16:32:51 · 280 阅读 · 0 评论 -
MySql数据库常用的sql语句使用方法
1、创建数据库:sql语句如下:CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci为了操作方便,你也可以使用Navicat等软件,进行可视化操作来创建数据库。2、创建表:sql语句如下:CREATE TABLE images (id VARCHAR(255) PRIMARY KEY, url VARCHAR(255) NULL, title VARCHAR(255) NULL, .原创 2020-05-16 20:06:28 · 466 阅读 · 0 评论 -
解决 tesserocr报错 Failed to init API, possibly an invalid tessdata path :D:\software\Anaconda3\tessdata
问题描述:我们在初次使用tesserocr库的时候,可能会报以下错误:RuntimeError: Failed to init API, possibly an invalid tessdata path: D:\software\Anaconda3\/tessdata/这是因为在 anaconda的安装目录下找不到"tessdata"这个文件夹。解决办法:找到Tesser...原创 2020-05-07 22:13:55 · 738 阅读 · 0 评论 -
AI&BigData训练营笔记二:Python实现爬取JSON数据
系统环境:操作系统:Windows8.1专业版 64bit Python:anaconda、Python2.7 Python modules:requests、jsonBackground:在使用Python进行爬虫开发时,我们经常需要爬取一些JSON数据。JSON数据:解决方法:在编程实现之前,需要按照以上的系统环境,配置好自己Python环境。# -*- coding: utf-8 -...原创 2018-04-22 17:01:24 · 603 阅读 · 0 评论 -
AI&BigData训练营笔记三:Python爬虫攻破反爬虫防御策略
系统环境:操作系统:Windows8.1专业版 64bit Python:anaconda、Python2.7 Python modules:requests、json、random、timeBackground:在使用Python爬虫爬取网页数据时,我们会遭到网站自身的反爬虫防御,这时候我们需要采取一些方法来攻破网站的反爬虫防御策略。解决方法:接下来,将使用伪装浏览器UA、IP代...原创 2018-04-22 17:49:09 · 796 阅读 · 2 评论 -
如何在Windows系统中设置Python程序定时运行?
系统环境:操作系统:Windows8.1专业版 64bit Background:有时候我们需要定时地执行某个Python程序,如:每天定时执行某个爬虫程序。因为我们可以把该Python程序设置成Windows系统中的任务计划程序,控制其每天定时执行。解决方法:1、在Windows开始菜单中搜索“计划任务”,并且点击打开“计划任务”:2、点击“创建基本任务”:3、给该基本任务命名,并点...原创 2018-04-30 21:33:06 · 15200 阅读 · 7 评论 -
Python爬虫爬取动态网页
系统环境:操作系统:Windows8.1专业版 64bit Python:anaconda、Python2.7 Python modules:requests、random、jsonBackground:对于静态网页,我们只需要把网页地址栏中的url传到get请求中就可以轻松地获取到网页的数据。但是,我们经常会遇到直接把网页地址栏中的url传到get请求中无法直接获...原创 2018-05-01 20:05:54 · 82890 阅读 · 19 评论 -
Anaconda如何配置多版本Python
Background:随着Python3 被越来越多的开发者所接受,但很多遗留的老系统依旧运行在 Python2 的环境中,因此有时你需要在同一个设备上,在两个Python版本中进行开发和调试。系统环境:操作系统:windows8.1中文版(64bit)解决办法:如何在同一台设备系统中同时配置Python2 和 Python3 是开发者不得不面对的问题,一个利好的消息是,Anaconda 能完美解...原创 2018-04-21 19:02:32 · 20498 阅读 · 22 评论 -
更改pip源
系统环境:操作系统:Windows8.1中文版 64bit我们在进行Python开发时,经常会通过pip操作来安装一些packages,但是由于网络速度非常慢,安装耗时长,所以我们需要把pip的源设置成国内的。安装步骤:在你的电脑的c:\user(或者用户)\你电脑的用户名\,这个目录下创建一个命名为“pip”的文件夹(如:C:\Users\gmn\pip),在该文件夹下创建一个命名为“pip.i...原创 2018-04-21 20:14:53 · 2038 阅读 · 0 评论 -
Python开发时的一些常用命令
系统环境:操作系统:Windows8.1中文版 64bitanaconda:(version 1.6.9)Python:2.7、3.61)Python版本之前的切换(Python3.6-->Python2.7):activate py27 #py27为Python2.7环境的名称2)查看当前anaconda的环境信息:conda info -e前面的*代表当前环境所处于的Python版本...原创 2018-04-21 20:47:59 · 502 阅读 · 0 评论 -
AI&BigData训练营笔记四:Python爬取A股股票名称和代码
系统环境:操作系统:Windows8.1专业版 64bit Python:anaconda、Python2.7 Python modules:requests、random、BeautifulSoup、pandasBackground:合规门户中有很多地方需要用户填写股票名称或股票代码,因此需要各个股票市场的证券名称和证券代码,包括 A/B/H股/港股。在此以...原创 2018-04-28 10:05:26 · 1918 阅读 · 0 评论 -
AI&BigData训练营笔记一:Python实现爬取HTML页面内容
系统环境:操作系统:Windows8.1专业版 64bitPython:anaconda、Python2.7Python packages:requests、beautifulsoupBackground:在使用Python进行爬虫开发时,我们经常需要爬取一些HTML页面的内容。解决方法:在编程实现之前,需要按照以上的系统环境,配置好自己Python环境,同时安装好requests、beaut...原创 2018-04-22 16:29:13 · 521 阅读 · 0 评论