Python-自定义上下文管理器

上下文管理器 上下文管理器可以帮助我们自动分配和释放资源 上下文管理器需要配合with语句使用 比如进行文件操作的时候我们可能会忘记操作后关闭文件(file close),使用with open(filename, mode) as f不需要我们手动关闭文件,不管处理文件中是否有异常出现,都能保证with语句执行完毕后关闭文件,有效防止资源泄露,安全多了。 123# with 语句的一般格式with context_expression [as target(s)]: with-body 在执行with-body会调用上下文管理器的__enter__方法,执行完with-body之后再调用上下文管理器的__exit__方法

Python

Python协程-asyncio、async/await

看到吐血 (´ཀ`」 ∠) 协程(Coroutine)本质上是一个函数,特点是在代码块中可以将执行权交给其他协程 众所周知,子程序(函数)都是层级调用的,如果在A中调用了B,那么B执行完毕返回后A才能执行完毕。协程与子程序有点类似,但是它在执行过程中可以中断,转而执行其他的协程,在适当的时候再回来继续执行。 协程与多线程相比的最大优势在于:协程是一个线程中执行,没有线程切换的开销;协程由用户决定在哪里交出控制权 这里用到的是asyncio库(Python 3.7),这个库包含了大部分实现协程的魔法工具 使用 async 修饰词声明异步函数 使用 await 语句执行可等待对象(Coroutine、Task、Future) 使用 asyncio.create_task 创建任务,将异步函数(协程)作为参数传入,等待event loop执行 使用 asyncio.run 函数运行协程程序,协程函数作为参数传入

Python

breaking一如既往的帅

** 看到了就爱上了,(๑•̀ㅂ•́)و✧Cloud的style move真的帅~~~(虽然很久没玩breaking了。。。。。(ノへ ̄、))**

随笔

Latex基本语法简记

备注:当前博客使用的 latex 渲染引擎有点问题,本篇文章更好的阅读体验:https://blog.csdn.net/qq_41022329/article/details/92798759 公式插入方式 行内公式可用\(...\)或$...$ 例如$ f(x)=x^2 $,显示为$ f(x)=x^2 $ 独立公式(单独另起一行,公式会居中),使用$$...$$或\[...\] 例如:$$ \int{f(x)dx} $$或 $$ \int_a^b{f(x)dx} $$,显示为: ∫f(x)dx \int{f(x)dx} ∫f(x)dx∫abf(x)dx \int_a^b{f(x)dx} ∫ab​f(x)dx

math

MATLAB基操复习

MATLAB基本操作 1. 对象定义 使用sym定义单个对象、使用syms定义多个对象 2. 使用limit求极限 lim⁡v→af(x) \lim_{v \rightarrow a} f(x) v→alim​f(x)1limit(f,v,a) % 使用limit(f,v,a,'left')可求左极限 3. 导数 使用diff(f,v,n)对 f(v)=vt−1f(v)=v^{t-1}f(v)=vt−1 求 nnn 阶导 dnfdnv\frac{d^nf}{d^nv}dnvdnf​,n 缺省时,默认为 1,diff(f) 默认求一阶导数。 4. 定积分和不定积分 使用int(f,v)求f对变量v的不定积分,使用int(f,v,a,b)求f对变量v的定积分,a、b为积分上下标。$ \int{f(v)dv} 、、、 \int^{a}_{b}{f(v)dv} $。

math

搜索技巧

搜索也是门学问啊,GFW之下,世道艰难。 (ノ~、)

随笔

Python面向对象

对象:一个自包含的实体,用一组可识别的特性和行为来标识 类:具有相同的属性和功能的对象的抽象的集合 实例:一个真实的对象,实例化就是创建对象的过程 多态:可对不同类型的对象执行相同的操作,而这些操作就像“被施了魔法”一样能够正常运行 封装:对外部隐藏有关对象工作原理的细节 继承:可基于通用类创建专用类 多态 多态可以让我们在不知道变量指向哪种对象时,也能够对其执行操作,且操作的行为将随对象所属的类型(类)而异。每当不知道对象是什么样就能对其执行操作,都是多态在起作用 多态以 继承 和 重写 父类方法 为前提 多态是调用方法的技巧,不会影响到类的内部设计 多态性即向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为(即方法) 听说Python天然就多态 12345678910111213141516171819202122232425class Person(object): def __init__(self,name,sex): self.name = name self.sex = sex def print_title(self): if self.sex == "male": print("man") elif self.sex == "female": print("woman")class Child(Person): # Child 继承 Person def print_title(self): if self.sex == "male": print("boy") elif self.sex == "female": print("girl")May = Child("May","female")Peter = Person("Peter","male")print(May.name,May.sex,Peter.name,Peter.sex)# 同一消息May.print_title()Peter.print_title()

Python

Jupyter Notebooks的简单了解

撸一手Jupyter

Python

Python多进程&&多线程(初步)

进程 && 线程 进程:进程是操作系统中执行的一个程序,操作系统以进程为单位分配存储空间,每个进程都有自己的地址空间、数据栈以及其他用于跟踪进程执行的辅助数据,操作系统管理所有进程的执行,为它们合理的分配资源。进程可以通过fork或者wpawn的方式来创建新的进程执行其他任务,不过新的进程有自己独立的内存空间和数据栈,所以必须通过进程间的通信机制(IPC,Inter Process Communication)来实现数据共享,具体的方式包括管道、信号、套接字、共享内存等。 线程:进程的一个执行单元。线程在同一个进程中执行,共享程序的上下文。一个进程中的各个线程与主线程共享同一片数据空间,因而相比与独立的进程,线程间的信息共享和通信更为容易。线程一般是以并发的方式执行的。注意在单核CPU系统中,真正的并发是不可能的,所以新城的执行实际上是这样规划的:每个线程执行一小会,然后让步给其他线程的任务(再次排队等候更多的CPU执行时间)。在整个线程的执行过程中,每个线程执行它自己的特定的任务,在必要时和其他进程进行结果通信。 Python多进程(使用multiprocessing) 1234567891011121314151617181920212223242526from time import time, sleepfrom random import randintfrom multiprocessing import Processdef my_task(name): sleep_time = randint(1,10) sleep(sleep_time) print("你叫了一声%s,它鸟你用了%d秒" % (name, sleep_time))def main(): start = time() process_1 = Process(target=my_task, args=["yeshan", ]) process_2 = Process(target=my_task, args=["foel", ]) # 启动进程 process_1.start() process_2.start() # 等待进程执行结束 process_1.join() process_2.join() end = time() print("一共花费了%f秒" % (end-start))if __name__ == '__main__': main()

Python

HTTPie的使用

HTTPie

18910111217