抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

what/why通常情况使用git clone github_repository_address下载下来的仓库使用git branch查看当前所有分支时只能看到master分支,但是想要切换到其他分支进行工作怎么办❓ 其实使用git clone下载的repository没那么简单😥,clone得到的是仓库所有的数据,不仅仅是复制在Github repository所能看到的m...

今天无聊的我打开了装了很久都没用的Microsoft Edge Beta,一波乱戳,惊讶的发现Microsoft Edge Beta居然有将网页打包为应用的功能😂 B站也有PC”客户端”了,真香😂

生成一个列表的几种方式的性能对比

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# -*- coding: utf-8 -*-

from timeit import Timer
import matplotlib.pyplot as plt

# 列表常用操作性能测试

# 迭代 + '+'
def test1():
l = []
for i in range(1000):
l = l + [i]


# 迭代 + append
def test2():
l = []
for i in range(1000):
l.append(i)

# 列表生成式
def test3():
l = [i for i in range(1000)]

# list构造函数 + range
def test4():
l = list(range(1000))

t1 = Timer("test1()", "from __main__ import test1")
# print("concat %f seconds" % t1.timeit(number=1000))

t2 = Timer("test2()", "from __main__ import test2")
# print("concat %f seconds" % t2.timeit(number=1000))

t3 = Timer("test3()", "from __main__ import test3")
# print("concat %f seconds" % t3.timeit(number=1000))

t4 = Timer("test4()", "from __main__ import test4")
# print("concat %f seconds" % t4.timeit(number=1000))

result = [t1.timeit(1000), t2.timeit(1000), t3.timeit(1000), t4.timeit(1000)]
method = ["for+ '+'", "for + append", "list comprehension", "list + range"]

plt.bar(method, result, color='rgby')

# plt.legend('concat time')
# print(zip(method, result))

for x,y in zip(method, result):
plt.text(x, y, "%fs" % y)

plt.show()

Cost time

个人简单记录下

virtualenv + pip

virtualenv是一个用于创建”隔离的ython运行环境”的工具,Docs
pip是Python的包管理工具,Docs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 安装virtualenv
pip install virtualenv

# -------------------------------- #
# 虚拟环境的创建与使用
# 1、在当前工程目录下使用virtualenv创建一套独立的Python运行环境
virtualenv venv # 环境名为venv(自由定义)
# 2、cd 到创建好的虚拟环境的Scripts目录,执行如下命令可激活或者退出虚拟环境
activate # 激活,激活后命令提示符会变成当前工程目录Python环境名
deactivate # 退出
# 3、激活虚拟环境后可使用pip为当前项目安装依赖,example:
pip install numpy
# 4、使用pip freeze > requirements.txt 可导出项目依赖到requirements.txt中
# 为项目创建一个新的、干净的环境时,可使用 pip install -r requiremen.txt 为项目安装依赖

Play With Docker一个免费使用的基于web界面的Docker环境

常用docker命令

可使用docker COMMAND --help查看命令的用法

Docker镜像相关

  • 1、docker image pull:用于下载镜像,镜像从远程镜像仓库服务的仓库中下载,默认从Docker Hub的仓库中拉取
1
2
3
4
# 格式:docker pull [OPTIONS] NAME[:TAG|@DIGEST]
# 说明:如果给出tag,一般拉取latest,name一般为username/repository,digest为镜像摘要可不给出
docker image pull ubuntu:latest
# 这个拉取标签为latest的ubuntu官方镜像,latest: Pulling from library/ubuntu,latest不一定是最新镜像

jupyter nbviewer

URL:https://nbviewer.jupyter.org/

结合Github的示例用法:https://nbviewer.jupyter.org/github/ + <用户名或者用户名/存放ipynb文件的仓库或者Gist ID>

例如:https://nbviewer.jupyter.org/github/yeshan333/JupyterNotebook-Show-sample

pdb

https://docs.python.org/zh-cn/3.7/library/pdb.html#module-pdb

使用方式

  • 1、在命令行下直接运行调试
1
python -m pdb test.py

示例

  • 2、在需要被调试的代码中添加import pdbpdb.set_trace()再运行代码进行调试

上下文管理器

  • 上下文管理器可以帮助我们自动分配和释放资源
  • 上下文管理器需要配合with语句使用

比如进行文件操作的时候我们可能会忘记操作后关闭文件(file close),使用with open(filename, mode) as f不需要我们手动关闭文件,不管处理文件中是否有异常出现,都能保证with语句执行完毕后关闭文件,有效防止资源泄露,安全多了。

1
2
3
# with 语句的一般格式
with context_expression [as target(s)]:
with-body

在执行with-body会调用上下文管理器的__enter__方法,执行完with-body之后再调用上下文管理器的__exit__方法

看到吐血 (´ཀ`」 ∠)

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

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