作者qrtt1 (有些事,有时候。。。)
看板Soft_Job
标题Re: [讨论] 记录 code snippet 的好用工具
时间Sat Apr 28 19:00:20 2018
※ 引述《alan23273850 (God of Computer Science)》之铭言:
: 各位板友午安,本鲁软体板首次发文请小力鞭
: 是说最近常和同学讨论到整理 code snippet 的重要,也就是功能导向的笔记
: 举例来说,要测量程式执行的时间,
: 以 C 语言来说,可以是:
: clock_t start = clock();
: ... // code execution
: clock_t end = clock();
: printf("%f\n", (float)(end - start) / CLOCKS_PER_SEC);
: 但如果是以 python 而言,则是:
: import datetime
: before = datetime.datetime.now()
: ... // code execution
: after = datetime.datetime.now()
: print after - before
: 那麽各位工程师不觉得针对不同的功能,把所有语言的 code 整理在一起,
: 未来撰写程式在翻阅或查阅的时候就更方便,不需要再敲 Google 关键字了呢?
: 台大资讯系刘邦锋教授也有写过 "由片语学习 C 程式设计" 一书,
: 虽然我没读过,不过我猜应该就类似书中那种以功能为导向整理过的感觉。
: 有没有什麽好用的工具或方法能有条不紊地整理这些 code 呢?
乱入一下,python 其实用 decorator 比较方便,也有人有提供 library
def stopwatch(func):
def with_logging(*args, **kwargs):
start_time = time.time()
try:
return func(*args, **kwargs)
finally:
end_time = time.time()
logger.info("{:36s} :: {:.3f}".format( \
func.__name__, end_time - start_time))
pass
return with_logging
@stopwatch
def my_function():
# do something
pass
==========================================================
至於 cheat sheet 的部分,最好是能被『执行』的程式码。
因为单纯眼睛看可能不太明白,可是跑一次就懂了。
不过,当你在『工作』的场域时,这些常用的工作大致都应该包好了。
也就是当你想要自干某些东西时,先问一下同事有没有相似的功能已被实作。
或是你可能打开旧专案,复制一段 code 出来用而已。
这类比较小行数的 cheat sheet 大概只会剩下一些难记的参数。
像是那个我永远记不住的 ffmpeg 参数,或是建立专案时 gradle 编译设定。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.115.99.169
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1524913222.A.3A7.html
※ 编辑: qrtt1 (59.115.99.169), 04/28/2018 19:05:11
1F:→ alan23273850: 其实我对 python 真的不是很熟,感谢建议 04/28 19:42
2F:推 kenshin528: 推 decorator 04/28 22:17
3F:推 hl4: 既然要用decorator 那乾脆再补个functools.wraps比较好 04/29 01:24
4F:推 vvind: 同推楼上 04/29 09:35
应 review comment 来补补 :)
from functools import
wraps
def stopwatch(func):
@wraps(func)
def with_logging(*args, **kwargs):
start_time = time.time()
try:
return func(*args, **kwargs)
finally:
end_time = time.time()
logger.info("{:36s} :: {:.3f}".format(
func.__name__, end_time - start_time))
pass
return with_logging
※ 编辑: qrtt1 (59.115.99.169), 04/29/2018 09:56:10