随笔分类 -  Python之路

摘要:生成器生成器是生成一个值的特殊函数,它具有这样一个特点:第一次执行该函数时,先从头按顺序执行,在碰到yield关键字时该函数会暂停执行该函数后续的代码,并且返回一个值;在下一次调用该函数执行时,程序将从上一次暂停的位置继续往下执行。例子:求1-10的所有整数的立方并将其结果打印输出,正常使用列表的实现如下:def lifang_ls(): ls = [] for i in range(... 阅读全文
posted @ 2019-04-26 22:32 陈小木 阅读(247) 评论(0) 推荐(0)
摘要:一、反射的基本概念二、反射示例三、反射的应用一、反射的基本概念反射:可以用字符串的方式去访问对象的属性,调用对象的方法(但是不能去访问方法),Python中一切皆对象,都可以使用反射。反射有四种方法:hasattr(obj, str) #判断一个对象是否有str属性或者string方法,有就返回True,没有就返回Falsegetattr(obj, str) #获取对象的属性或者方法,如果存在则打... 阅读全文
posted @ 2019-04-24 16:13 陈小木 阅读(160) 评论(0) 推荐(0)
摘要:一、IO模型介绍二、阻塞IO(Blocking IO)三、非阻塞IO(non-Blocking IO)四、多路复用IO(IO multiplexing)(重点)1.Python中的select模块2.select网络IO示例五、异步IO(Asynchronous IO)六、IO模型比较分析七、selectors模块1.select2.poll3.epoll4.selector一、IO模型介绍​ ... 阅读全文
posted @ 2019-04-23 09:54 陈小木 阅读(1717) 评论(0) 推荐(0)
摘要:一 引子二 协程介绍三 Greenlet四 Gevent模块五 Gevent之同步与异步六 Gevent之应用-爬虫七 Gevent之应用-socket并发一 引子​ 本节的主题是基于单线程来实现并发,即只用一个主线程(很明显可利用的cpu只有一个)情况下实现并发,为此我们需要先回顾下并发的本质:切换+保存状态。 cpu正在运行一个任务,会在两种情况下切走去执行其他的任务(切换由操作系统强制... 阅读全文
posted @ 2019-04-17 22:07 陈小木 阅读(32491) 评论(5) 推荐(3)
摘要:一 信号量二 事件三 条件Condition四 定时器(了解)五 线程队列六 标准模块—concurrent.futures基本方法ThreadPoolExecutor的简单使用ProcessPoolExecutor的使用map的使用回调函数的应用一 信号量同进程一样,semaphore管理一个内置的计数器,每当调用acquire()时内置计数器-1,调用release()时内置计数器+1。计数器... 阅读全文
posted @ 2019-04-16 21:45 陈小木 阅读(1025) 评论(0) 推荐(0)
摘要:一 python与线程1.全局解释器锁GIL(用一下threading模块之后再来看~~)2.python线程模块的选择二 Threading模块1.线程创建2.多线程与多进程3.多线程实现socket4.Thread类的其他方法join方法:5.守护线程三 锁1.GIL锁(Global Interpreter Lock)2.同步锁GIL VS LockGIL锁与互斥锁综合分析互斥锁与join的区... 阅读全文
posted @ 2019-04-16 20:08 陈小木 阅读(251) 评论(0) 推荐(0)
摘要:一 背景知识1.进程2.有了进程为什么还要线程3.线程的出现二 线程和进程的关系三 线程的特点四 线程的实际应用场景五 内存中的线程六 用户级线程和内核级线程(了解)1.用户级线程2.内核级线程3.用户级和内核级线程的对比4.混合实现5.linux操作系统的NPTL一 背景知识1.进程​ 之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运... 阅读全文
posted @ 2019-04-16 10:47 陈小木 阅读(476) 评论(0) 推荐(0)
摘要:一、为什么要有进程池? 在程序实际处理问题过程中,忙时会有成千上万的任务需要被执行,闲时可能只有零星任务。那么在成千上万个任务需要被执行的时候,我们就需要去创建成千上万个进程么?首先,创建进程需要消耗时间,销毁进程(空间,变量,文件信息等等的内容)也需要消耗时间。第二,即便开启了成千上万的进程,操作系统也不能让他们同时执行,维护一个很大的进程列表的同时,调度的时候,还需要进行切换并且记录每个进程... 阅读全文
posted @ 2019-04-15 22:42 陈小木 阅读(132) 评论(0) 推荐(0)
摘要:一 背景知识 顾名思义,进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,必须事先了解操作系统 PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。将一个单独的cp... 阅读全文
posted @ 2019-04-15 22:40 陈小木 阅读(443) 评论(0) 推荐(0)
摘要:​ 我们已经了解了,运行中的程序就是一个进程。所有的进程都是通过它的父进程来创建的。因此,运行起来的python程序也是一个进程,那么我们也可以在程序中再创建进程。多个进程可以实现并发效果,也就是说,当我们的程序中存在多个进程的时候,在某些时候,就会让程序的执行速度变快。以我们之前所学的知识,并不能实现创建进程这个功能,所以我们就需要借助python中强大的模块。​ 仔细说来,multip... 阅读全文
posted @ 2019-04-10 23:51 陈小木 阅读(597) 评论(0) 推荐(0)
摘要:# django的中间件?# django的请求周期# django的中间件做登录判断?# django的分页## 今天的任务# 1.实现登录功能# 2.实现用户的管理# 3.实现分页# 4.实现用户的新增,编辑,删除思考:在之前我们判断用户是否登录的方法:给视图函数加装饰器来判断是用户是否登录,把没有登录的用户请求跳转到登录页面。我们通过给几个特定视图函数加装饰器实现了这个需求。但是以后添加的视... 阅读全文
posted @ 2019-04-03 23:13 陈小木 阅读(145) 评论(0) 推荐(0)
摘要:模块安装pip install gitpython基本用法1. 初始化from git import RepoRepo.init('/data/test2') # 创建一个git文件夹2. 添加与提交repo.index.add(['a.txt']) #将文件提交到缓存区repo.inex.commit('update new') # 将缓存区文件提交到版本库3. 回滚repo.index.che... 阅读全文
posted @ 2019-03-26 23:03 陈小木 阅读(14993) 评论(0) 推荐(0)
摘要:将一个函数运行在远程计算机上并且等待获取那里的结果,这个称作远程过程调用(Remote Procedure Call)或者 RPC。RPC是一个计算机通信协议。比喻将计算机服务运行理解为厨师做饭,厨师想做一个小葱拌豆腐,厨师需要洗小葱、切豆腐、调汁、凉拌。他一个人完成所有的事,如同古老的集中式应用,一台计算机做所有的事。制作小葱拌豆腐{ 厨师>洗小葱>切豆腐>凉拌 }rpc应用场景:而... 阅读全文
posted @ 2019-03-25 23:06 陈小木 阅读(288) 评论(0) 推荐(0)
摘要:python客户端# rabbitmq官方推荐的python客户端pika模块pip3 install pika应用场景1:单发送单接收1.生产-消费者模型P 是生产者C 是消费者中间hello是消息队列可以有多个P、多个CP发送消息给hello队列,C消费者从队列中获取消息,默认轮询方式生产者send.py我们的第一个程序send.py将向队列发送一条消息。我们需要做的第一件事是建立与R... 阅读全文
posted @ 2019-03-24 23:13 陈小木 阅读(235) 评论(0) 推荐(0)
摘要:1. 什么是消息队列生活里的消息队列,如同邮局的邮箱,如果没邮箱的话,邮件必须找到邮件那个人,递给他,才玩完成,那这个任务会处理的很麻烦,很慢,效率很低但是如果有了邮箱,邮件直接丢给邮箱,用户只需要去邮箱里面去找,有没有邮件,有就拿走,没有就下次再来,这样可以极大的提升邮件收发效率!rabbitmq是一个消息代理,它接收和转发消息,可以理解为是生活的邮局。你可以将邮件放在邮箱里,你可以确定有邮递员... 阅读全文
posted @ 2019-03-24 23:12 陈小木 阅读(195) 评论(0) 推荐(0)
摘要:一、同步异步,阻塞与非阻塞1.同步与异步比如说你要去一个餐厅吃饭,你点完菜以后假设服务员告诉你,你点的菜,要两个小时才能做完,这个时候你可以有两个选择一直在餐厅等着饭菜上桌你可以回家等着,这个时候你就可以把你的电话留给服务员,告诉服务员等什么时候你的饭菜上桌了,在给你打电话所谓同步就是一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成,这是一种可靠的任务序列。要... 阅读全文
posted @ 2019-03-22 20:06 陈小木 阅读(258) 评论(1) 推荐(0)
摘要:python 读写 excel 有好多选择,但是,方便操作的库不多,在我尝试了几个库之后,我觉得两个比较方便的库分别是 xlrd/xlwt、openpyxl。之所以推荐两个库是因为这两个库分别操作的是不同版本的 excel,xlrd操作的是 xls/xlxs 格式的 excel,而 openpyxl 只支持 xlxs 格式的excel,openpyxl使用起来会更方便一些,所以如果你只操作 xlx... 阅读全文
posted @ 2019-03-21 19:27 陈小木 阅读(581) 评论(0) 推荐(0)
摘要:一、什么是序列化 在我们存储数据或者网络传输数据的时候,需要对我们的对象进行处理,把对象处理成方便存储和传输的数据格式。这个过程叫序列化,不同的序列化结果也不同,但目的是一样的,都是为了存储和传输 在Python中三种序列化的方案: 二、json 1.什么是json json是前后端交互的枢纽,相当 阅读全文
posted @ 2019-01-13 23:54 陈小木 阅读(535) 评论(0) 推荐(0)
摘要:1.sweetalerthttps://sweetalert.js.org/guides/form组件form表单完成的事情提供input可以提交数据对提交的数据进行校验提供错误提示定义form组件from django import formsclass RegForm(forms.Form): user = forms.CharField(label='用户名') pwd = form... 阅读全文
posted @ 2018-12-12 23:07 陈小木 阅读(131) 评论(0) 推荐(0)