随笔 - 229
文章 - 0
评论 - 10
阅读 -
26万
随笔分类 - python
Flask_APScheduler的简单使用
摘要:首先安装: pip install flask_apscheduler from apscheduler.events import EVENT_JOB_EXECUTED, EVENT_JOB_ERROR from flask import Flask from flask_apscheduler
阅读全文
python中的"环绕通知"
摘要:跟java一样, 在不修改源码的情况,对某个方法进行前置 和 后置 功能添强 class Old(): def do_sth(self): print('do something....') class MiddleWare(): def __init__(self,old): self.old =
阅读全文
装饰器03之多个装饰器的执行顺序
摘要:直接上代码 ,看打印结果便知 import functools def auth(func): @functools.wraps(func) def inner(*args, **kwargs): print('装饰器auth:在index函数调用之前做一些事。。。') ret = func(*ar
阅读全文
装饰器02
摘要:在 装饰器01 中,index函数添加装饰器auth之后,index.__name__变成了inner, 但是我们可以使用functools工具让index.__name__ 仍然等于index. 代码如下: import functools def auth(func): @functools.w
阅读全文
装饰器01
摘要:python中的装饰器相当于java中的切面,我们可以在它之前或之后做一些其它的事 def auth(func): def inner(*args, **kwargs): print('在index函数调用之前做一些事。。。') ret = func(*args, **kwargs) # 这儿的fu
阅读全文
字符串的rsplit方法
摘要:''' rsplit() 方法语法: rsplit([sep=None][,count=S.count(sep)]) sep -- 可选参数,指定的分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。 count -- 可选参数,分割次数,默认为分隔符在字符串中出现的总次数。 ''
阅读全文
APScheduler的简单使用
摘要:from apscheduler.schedulers.blocking import BlockingScheduler from apscheduler.schedulers.background import BackgroundScheduler from apscheduler.sched
阅读全文
协程
摘要:进程和线程都是由操作系统控制调度的, 协程是是函数级别的调度,可以由程序员写代码控制 python中使用async和await两个关键字来支持原生协程 # python后期使用async和await两个关键字来定义协议, 这样就可以与生成器表示区别开来, 语义也更加明确 # 底层也是使用生成器来实现
阅读全文
yield from语法的高级特性
摘要:def gen(): """子生成器""" yield 1 def gen1(gen): """委托生成器""" yield from gen def main(): """调用方""" g = gen() g1 = gen1(g) g1.send(None) # 启动生成器 上面的代码有3个角色,
阅读全文
yield from语法应用
摘要:yield from 是python3.3中新增的语法, 语法结构: yield from iterable 在上一篇文章中自定义了一个my_chain函数,现在可以yield from方法对其进行精简 # 自定义一个chain def my_chain(*args, **kwargs): """注
阅读全文
yield的应用:多个可迭代对象联合遍历
摘要:使用itertools工具类中的chain方法,可以很方便的将多个iterable对象一起遍历. 不过,对于dict类型的iterable对象,只会遍历key. from itertools import chain my_list = [1, 2, 3] my_dict = { 'name': '
阅读全文
dict字典元素按key或者value进行排序
摘要:使用python内置的sorted方法,可以很方便的对dict元素排序 if __name__ == '__main__': my_dict = {} my_dict['CD'] = 12 my_dict['XA'] = 60 my_dict['BJ'] = 15 my_dict['GZ'] = 1
阅读全文
list排序
摘要:使用sort方法,可以将list中的元素按自定义属性进行排序 class Person(object): def __init__(self, name, age): self.name = name self.age = age def __str__(self): return 'name:{}
阅读全文
生成器高级特性2
摘要:生成器除了前面提到的send方法传参之外,还有两个比较重要的方法 close() : 关闭生成器. 关闭生成器之后,如果后面还想从生成器中值 ,会报错 throw() : 传个异常到生成器内部 def gen_func(): yield 1 yield 2 yield 3 if __name__ =
阅读全文
time时间库使用示例
摘要:time时间库主要有以下几个方法 1. 生成struct_time ,然后就可以很方便的获取到年月日,时分秒等信息 time.localtime() 2. 生成时间戳 time.time() 3. 将struct_time 转成指定格式的时间字符串 time.strftime(format,stru
阅读全文
生成器的高级特性
摘要:生成器不但可以产出值 ,还可以接收调用方的入参 举个例子 def gen_fun(): # 这种方式 ,即可产出值 ,也可以接收调用传进来的参数 html = yield "http://www.baidu.com" print(html) # 这种方式就只能产出值,不能接收调用方入参 yield
阅读全文
fabric报错:Fatal error: run() received nonzero return code 1 while executing!
摘要:今天在使用fabric远程安装rpm时,一直报:Fatal error: run() received nonzero return code 1 while executing! 这看起来也是没笔病呀,但fabric就是这么蛋疼, 它在执行过程中, 如果执行命令返回非零, 就会中断后面的逻辑. 解
阅读全文
select编程[回调+事件循环]
摘要:感觉比java写起来还要忧伤..... """ select , poll,epoll 注意: epoll并不一定比select的性能好,这需要看场景 1. 在高并发场景,且连接活跃度不是很高的时候,epoll比select好, 比如web应用 2. 在并发不高,但连接很活跃的场景下,select
阅读全文
进程间通信的4种方式
摘要:python提供了4种方式来满足进程间的数据通信 1. 使用multiprocessing.Queue可以在进程间通信,但不能在Pool池创建的进程间进行通信 2. 使用multiprocessing.Manager.Queue可以在Pool进程池创建的进程间进行通信 3. 通过Pipe进行线程间的
阅读全文
多进程编程
摘要:在 多线程与多进程的比较 这一篇中记录了多进程编程的一种方式. 下面记录一下多进程编程的别一种方式,即使用multiprocessing编程 import multiprocessing import time def get_html(n): time.sleep(n) print('sub pr
阅读全文