假设你git clone了一个函数库,然后想要在某一段代码中调用其中的某一个函数,请问你要怎么做呢?
这里,我们来给出一个这类函数的调用小trick。
其实方法也比较简单,一种简单粗暴的方法就是把这个函数的路径加入到系统的python path中,但是这种操作是永续的,在更多情况下,我们只是想要临时在某些脚本中调用这个方法,在其他情况下,我们并不希望这个路径加入到我们的系统python path中。
因此,我们可以在程序中通过下述代码进行调用:
import sys
print(sys.path) # 打印python path,list格式,其元素即为库函数路径。
sys.append("your function file path") # 加入你的函数所在目录
执行上述操作之后,目标路径就被临时加入到python path中了,之后你就可以轻松的进行调用了。
需要注意的是,如果你是复写了已有的某个函数,那么你需要将你的路径insert到开头的位置,否则它不会读入你的函数,而是会读入之前已有的函数。
cache方法也是python中常用的提高执行效率的常见方法,其主要思路为将函数与其输入保存到缓存中,当需要重复调用时,直接读取其之前执行的结果,而不需要再重新计算一边。
因此,这算是一种比较暴力的动态规划实现方法。但是,由于他是直接读取的上一次的执行结果,当不同时刻执行结果会不相同时,绝对不能使用cache,另外,由于需要将结果一直存储在缓存中,所以对于非频繁调用的密集计算型函数,也不建议使用cache。
下面,我们给出两种cache的实现方法:
更详细的使用方法可以参考两者的官方说明文档,这里不再展开。
tqdm函数库为python中常用的一种进度条绘制方法。
其参考用法如下:
from tqdm import tqdm
ans = 0
with tqdm(range(1, 101), ncols=100) as t:
for i in t:
ans += i
print(ans)
其中,tqdm的输入为一个list或者为一个迭代器,且只有在输入为list等已知总长度的情况下,可以正确显示进度条,否则只会通过数字显示已执行进度。
而tqdm的执行逻辑事实上是在每一次打印之后将当前位置指针重新退行,然后再上一行中覆盖打印内容。因此,如果进度条长度过长,超过单行总长度或者在训练中打印了新的内容时,回溯上一行就会失败,无法回到上一次进度条的开始位置,故而导致进度条显示异常。
因此,我个人建议使用ncols参数人为地去指定一下进度条的总长度。
另外,需要注意的是,我们上面使用了with的写法,这是一种比较推荐的写法,因为tqdm函数如果遇到强制终止程序等情况时,时常会出现一些bug,无法正常地完成回溯,而使用with方法可以很好的处理这部分的异常。
更详细的tqdm说明可以参考说明文档: