边读边产出
补全生成器 numbers(lines):用 yield 逐个产出每行里的整数,跳过不是整数的行,不要先攒成列表。输出 是否生成器/总和。
大文件一读就内存不够
场景:一个统计脚本在测试数据上好好的,一上线跑几十万行的日志就 MemoryError——那台机器给它的内存很少。 任务:改 ~/work/big/count.py,让它在内存很紧时也能处理大文件,输出 行数/5xx 个数/最大耗时 不变。
找到热点并提速
场景:一个去重统计脚本在几千行上还行,线上几万行时慢得没法用。先别猜,让分析器告诉你时间花在哪。 任务:先用 python3 -m cProfile -s cumtime dedup.py ids.txt 找到热点,再改掉它。输出必须和原来
错误提示写到哪
命令行工具的错误提示应该写到【0】,这样用管道接它的输出时数据不会被弄脏。
好测试的标准
一条好的单元测试,最重要的是【0】。
日志里的三个数
逐行统计日志:字段数不是 5、或状态码/耗时不是整数的算坏行。统计好行数、状态码 ≥ 500 的行数、坏行数和出现最多的路径,输出 好行|错误|坏行|路径。
日志统计命令行工具
场景:运维同事每天要看好几份访问日志:总共多少请求、多少 5xx、哪些路径最热。他想要一个能在任何机器上直接用的命令行工具。 任务:从空文件写起 ~/work/logstat.py:python3 logstat.py 日志文件… [--t
写出能抓住错误的测试
场景:money.py 已经写好而且是对的,但它没有测试。以后谁改坏了它,现在没有任何东西能发现。 任务:给 ~/work/lib/money.py 写 unittest 测试 ~/work/lib/test_money.py:在原版上全部
-o 后面那个名字
命令 gcc -std=c11 -o stat stat.c 里,-o stat 的作用是【0】。
改了源码没重编
改了 stat.c,却忘了重新编译就运行 ./stat,实际跑的是【0】。