协程中的async-with和async-for
本文翻译自Python的开发者指南 PEP 492
异步上下文管理器async with异步上下文管理器指的是在enter和exit方法处能够暂停执行的上下文管理器。
为了实现这样的功能,需要加入两个新的方法:__aenter__ 和__aexit__。这两个方法都要返回一个 awaitable类型的值。
异步上下文管理器的一种使用方法是:
123456class AsyncContextMana
...
使用configparser来管理配置
我们在项目开发过程中 有时会做一些配置项 这些配置项可能根据环境不同有不同的值。为了方便配置和使用推荐使用configparser来管理配置。
官方文档地址在这→ configparser
此模块提供了它实现一种基本配置语言 ConfigParser 类,这种语言所提供的结构与 Microsoft Windows INI 文件的类似。 你可以使用这种语言来编写能够由最终用户来自定义的 Pytho
...
高效的itertools模块
我们知道,迭代器的特点是:惰性求值(Lazy evaluation),即只有当迭代至某个值时,它才会被计算,这个特点使得迭代器特别适合于遍历大文件或无限集合等,因为我们不用一次性将它们存储在内存中。
Python 内置的 itertools 模块包含了一系列用来产生不同类型迭代器的函数或类,这些函数的返回都是一个迭代器,我们可以通过 for 循环来遍历取值,也可以使用 next() 来取值。
it
...
SQLAlchemy中指定想要使用的索引
我们知道在MySQL中可以使用FORCE INDEX(index_name,...)来强制使用索引,那在SQLAlchemy如何指定呢?
经过多方查找和实践,我发现了一个叫with_hint的函数。
我们看下源码
12345678910111213141516171819202122232425262728293031323334353637def with_hint(self, selectab
...
SQLAlchemy中实现更新不存在即插入
项目高并发的时候很容易出现数据库插入相同的数据,虽然可以使用唯一索引避免插入相同数据,但是不断的程序报错也是我们要避免的。
MySQL中的插入更新使用 insert ... on duplicate key update .. 语法可以避免上述情况,举个例子
1234567drop table if exists `test`;create table `test` ( `id` int(11)
...
最漂亮iTerm2+oh-my-zsh配色
参考这篇文章 最漂亮( iTerm2+oh-my-zsh配色) 配置
不过还是有一点不是我想要的 比如说 配置完之后可能会显示用户名和主机名,这些非常占据长度。
可以参看这篇文章自定义设置用户名和主机名的显示:oh-my-zsh终端用户名设置
还有一点是 现在是全路径显示 如果我们想只显示当前目录可以参考这篇文章设置:Zsh 里修改前缀
具体设置是:
要到agnoster配色主题的配置文件中改一个
...
Python的堆模块heapq
Python的heapq模块实现了一个适用于Python列表的最小堆算法。
堆是一种树形数据结构,其中子节点与父节点之间是一种有序关系。最大堆中父节点大于或等于两个子节点,最小堆父节点小于或等于两个子节点。heapq模块实现的是一个最小堆。
创建堆
创建堆有两种方式
方法一:使用heappush
12345678In [18]: import heapqIn [19]: data = [1,3,4
...
使用DockerSwarm管理容器
我们在之前的学习都是操作一台主机上的一个或者多个容器,但是在实际场景中可能一个服务需要多台主机,多个容器,那这时候怎么办呢?
我们可以通过一套容器编排系统区解决。 Swarm Mode 并不是唯一可以做容器编排的工具
Swarm是内置在Docker中的
上面是Docker Swarm的结构设计,Docker Swarm是一种集群的架构,里面有各种节点,节点的角色分为Manager和Wor
...
一份从A-Z的Python技巧
最近在浏览学(huang)习(tu)文章的时候看到一篇不错的Python技巧文章,将其翻译成中文来记录学习一下。
原文链接地址:An A-Z of useful Python tricks
all or any
在进行可迭代对象逻辑判断的时候,使用all或者any将很简单:
123456789101112131415In [1]: x = [True, True, False]In [2]: if
...
Python优雅地dumps非标准类型
文章标题的参考文章: Python 优雅地 dumps 非标准类型
今天主要学习的是里面的知识点singledispatch。
在Java语言中我们知道是有方法重载的(同一个方法名,参数不同或顺序不同导致),但是在Python中是没有方法重载这么一说的。不过在Python中我们可以使用singledispatch装饰器将一个普通函数变为泛函数(generic function)。
如果我们想针对
...