Python3进程间通信方法queue

之前将了多线程的实例可以查看之前的笔记:https://sulao.cn/post/609.html,由于多线程中进程资源是共享的,所以传入queue队列,由各子线程去queue队列中获取资源,现在在多进程中已经不适用,因为多进程中会为每个子进程拷贝一份资源,所以不能继续按照多线程的方式来撰写代码,解决方法是多进程multiprocessing模块中也有queue方法,此queue方法不是之前讲的queue方法,我们来看看代码:#!/usr/bin/python3#coding:utf-8from urllib import&...

阅读全文

python日志模块logging详解

很多程序都有记录日志的需求,并且日志包含的信息有正常的程序访问日志还可能有错误,警告等信息输出,python的logging模块提供了标准的日志接口,可以通过它存储各种格式的日志,日志级别等级:critical>error>warning>info>debug看下各个日志级别代表什么意思:import logginglogging.basicConfig(filename='app.log',level=logging.DEBUG,format='%(asctime)s&nbs...

阅读全文

python3多进程实例详解

刚写完多线程的笔记没几天,可以看看我之前的多线程IO密集型操作实例详解:https://sulao.cn/post/609.html多进程和多线程的区别在于,多线程是一组资源由所有子线程共享,当其中一个子线程修改共享资源的变量,那么所有子线程获取到的共享资源变量就会改变,当其中一个线程崩溃会导致整个进程崩溃,多进程拷贝资源变量到每个子进程进行各自处理各自的任务,不受其他进程的影响,多进程的劣势是创建进程资源开销大,运行的进程数量也是有限的,进程过多会导致任务调度都会出现问题今天来把多进程也来做几个实例介绍下,本地目前没有这种场景,也是尽量写最简单最容易理...

阅读全文

python3筛选出日志中最多访问的前10个IP

bash脚本也能实现,现在用python3重写了下这个脚本,以后肯定用的上,直接看我的实践例子,用的是我博客的访问记录进行筛选的,直接上代码了:#!/usr/bin/python3#coding:utf-8l = []logs = {}with open('sulao.cn-access.log', 'r', encoding='utf-8') as f:   &nbs...

阅读全文

python3多线程IO密集型操作实例详解

以前没写过多线程和多进程的笔记,自己抽空写了个实例,网上大多数的例子都是一样的,翻了百度几页都是几个计数器加时间打印出来,一般初学者也是很难看懂的Python解释器由于设计时有GIL全局锁,导致了多线程无法利用多核,实际使用的是单核CPU,使用抢占模式来执行任务,实际没有并行处理任务,所以实际场景当中和单线程没有太大的速度上的效果,同时多线程使用的资源都有所有线程来共享,所以我们再使用资源的时候需要加锁,以免当前线程修改资源的时候其他线程也来修改导致把数据改乱,我下面例子场景由于是中使用了queue队列,所以无需加锁来操作主要代码如下:#!/usr/bi...

阅读全文

python3使用base64将图片转码解码

工作中经常遇到,注意不是将图片名字和路径转码,而是将图片对象转码进行网络间传递,之前用了php写了一个,可以参考之前的笔记:https://sulao.cn/post/544.html现在主要的代码如下:将图片转码成base64#!/usr/bin/python3#coding:utf-8import base64def conv_bs64(image_path):    with open(image_path, 'rb') a...

阅读全文

python3使用xlwt模块操作excel

和读操作分开写了两份笔记,后面还需要更新一个更新excel的笔记,写入数据也基本就四步操作第一步:创建excel文件第二步:创建工作簿对象第三步:写入表头数据第四步:循环写入数据具体代码如下#!/usr/bin/python3#coding:utf-8import xlwt#创建excelbook = xlwt.Workbook(encoding='utf-8')#创建工作簿sheet = book.add_sheet(u'工作资料')#创建...

阅读全文

python3使用xlrd模块读取excel文件

自己操作使用了下,顺便记录,加深了解xlrd模块的使用方法,网上写的一大堆,我这里每一句的意思都进行了注释,方便理解,其实主要就三个步第一步:打开excel对象第二步:获取工作簿对象第三步:使用循环、cell、get_rows获取操作工作簿数据#!/usr/bin/python3#coding:utf-8import xlrdbook = xlrd.open_workbook(r'face.xls')#返回所有工作簿名称列表(list)print(books.sheet_names()...

阅读全文

python3使用IPy检测IP地址的合法性

网上看到这个教程,感觉以后做数据分析用的上,于是本地测试分析了下,根据自己的总结来记录最后正确的答案,一般网上有三种方式,第一种是正则表达式,第二种是拆解IP地址为列表来逐个判断,第三种使用外部IPy模块,个人建议使用第三种,两个字,省事,由于我验证过了,所以我得出的结论不光是省事,我截图大家看下就知道了。如果IP格式是这种xxx.xxx.xxx不足十分位百分位的用0补全的地址的话,使用正则这种方式会匹配不到,正则我不是太精通,我个人还是推荐IPy模块来匹配,两种代码都发出来,以后亦可以进行参考正则匹配方式#!/usr/bin/python3#cod...

阅读全文

Python全局变量global关键字使用详解

python全局变量和php的全局变量区别还是蛮大的,我们定义的变量他的作用域覆盖本模块或者文件,我们再函数中重新定义一个同名局部变量的话,在函数内加以修改,函数中会优先使用这个函数内定义的局部变量,如果我们需要在函数内修改全局变量,那么我们需要global关键字改变局部变量的作用域,直接上例子吧#!/usr/bin/python3#coding:utf-8names = 'shevechco'def test():    names =&nb...

阅读全文