知识库
同一段代码在 CPython 与 PyPy 上跑出十倍差距:JIT 到底优化了什么
为什么同一段 Python 代码,PyPy 能快十倍? 如果你用纯 Python 写过一个计算密集的循环,比如计算斐波那契数列或处理大量整数运算,可能会发现:在 PyPy 上运行比在 CPython 上快很多,有时接近十倍。这不是玄学,而是…
容器里 python -m 包名.入口 找不到模块:代码被铺在了根目录
你把一个 Python 项目打成镜像,本地 python m mypkg.main 跑得好好的,一进容器就报找不到模块。Dockerfile 里明明把代码 COPY 进去了,ls 也能看到文件,可 Python 就是"看不见"这个包。 现象…
抓某些站点报 CERTIFICATE_VERIFY_FAILED,请求根本发不出去
采集脚本明明昨天还好好的,今天一跑就抛异常,而且异常发生在"请求发出去之前"——连接压根没建立。这篇文章讲 CERTIFICATE VERIFY FAILED 的原因,以及关闭证书校验时你必须知道的代价。 现象 抓某些站点时,直接抛出证书验…
高频抓取触发限流:抓了 250 个之后整个任务中断
写采集脚本的人,大多经历过那个转折点:前几分钟一切顺利,突然之间目标域名的连接全部失败,整个任务中断。这篇文章讲的是限流的机制,以及为什么"能跑通"和"能长期稳定跑"是两回事。 现象 连续抓取历史数据时,抓了大约 250 个对象之后,该域名…
确定性函数冒充"随机":为什么你的流水线每天生成同一批结果
你给流水线加了定时任务,每天自动跑一遍,满心期待每天产出新鲜内容。结果打开一看——跟昨天一模一样,跟前天也一模一样。问题不在定时任务,而在那个被你当成"随机"的挑选函数。 现象 流水线每天都生成同一批候选,内容高度重复。加了定时任务之后依然…
出现"不可能的数值"时先怀疑代码:公式、循环变量、键与日历四类错误
当脚本算出一个"物理上不可能"的数字——比如收益率 −100%、t 值 −26——你会先怀疑什么?数据脏了?还是代码写错了?这篇文章的核心观点很短: 先怀疑代码。 现象 回测收益率里出现了 −100% 这种不可能值,以及荒谬到离谱的统计量:…
少数离群值把均值拉爆:中位数只有 -0.01%,均值却是 +7.54%
统计报告里最容易被滥用、也最容易骗人的一个数字,是"平均"。当一组数据里混进少数极端值时,"均值"可能会给出一个完全违背直觉的结论。这篇文章用一个真实的矛盾数字,讲清楚什么时候该用中位数。 现象 某个分组统计里,出现了两个自相矛盾的数字: …
数据源是倒序返回的,取"最新"其实取到了最老的一条
研究脚本最让人兴奋的时刻,是它"跑出了一个显著信号"。最让人心凉的时刻,是几天后发现这个信号完全是你脚本 bug 凭空造出来的。这篇文章记录的就是这样一个"差点被写进规则库"的假发现。 现象 一个研究脚本跑出了一个统计上显著的信号,各项指标…
回测里「能成交」是假象:买不到的那批样本被悄悄算进了结果
一个回测能赚钱,和"你明天真的能按它赚到钱",中间隔着一条常被忽略的鸿沟。这篇文章讲的,就是回测里最常见的一种自欺:把"买不到"的样本也算了进去。 现象 一个策略在"次日收盘买入"的口径下表现良好: 看起来既简单又可行——不用盯盘,不用抢单…
把非独立样本当独立样本,统计量膨胀了好几个数量级
拿到一个 t 值高达 38 的回测结果,你第一反应是什么?兴奋?还是——先数一数,这个样本量是不是在骗你?这篇文章讲的,就是那种"样本量看起来很大、实际上很小"的经典陷阱。 现象 用全样本做回测,t 值高得离谱: 38 的 t 值意味着"这…
前视偏差:用了未来才知道的信息去决定当下
如果你写过任何"策略回测",并且跑出过漂亮得让自己心跳加速的收益曲线,那这篇文章大概率能戳到你——那条曲线里,常常藏着一个你根本没用到的秘密:未来数据。 现象 一个"确认型"策略(典型结构是:先出现信号 A,再等条件 B 确认后入场)回测出…
元组索引取错字段:一个下标让整套统计指标系统性偏小
批量处理数据文件时,你有没有遇到过这种事:脚本一行报错都没有,跑出来的数字"看着差不多,但就是对不上"?等你翻遍公式也找不出问题——因为错根本不在公式里,而在一个不起眼的下标。 现象 一个基于"距区间低点涨幅"的统计指标,算出来的数值系统性…
实时数据源偶发 IndexError——依赖外部通道的代码必须自带降级路径
一个从实时数据源取数的脚本,平时跑得好好的,偶尔却在半夜崩一次,报的还是一个跟你业务逻辑毫不相关的 IndexError。查来看去,问题不在你的代码,而在"那一刻对方没给数据"。 现象 脚本从某个实时数据源取数时,偶发以下错误: 或者干脆卡…
调用 GPU 运行时库报 201、错误码 1、未定义引用——一份 ABI 细节核对清单
要让脚本用上加速卡(GPU)的算力,就得去调它那套底层的运行时 API。这一步经常是"代码看着对、编译也能过,一跑就报一堆看不懂的错误码"。错误码不会告诉你原因,只能对照文档一项项核。 现象 调用某加速卡的运行时 API 时,错误花样百出,…
每次运行都刷 RequestsDependencyWarning——版本不匹配警告该在源头修
脚本功能一切正常,可每次运行都要先刷一行黄色警告,把真正的正常输出挤得看不见。命令行工具尤其难受:想看结果,得先拨开这行噪声。 现象 几乎每次运行脚本,输出开头都固定带着一行警告: 下面的业务输出就淹在这行下面。一行两行还好,对于那些要在循…
第三方接口库升级后报 KeyError——参数值与列名写死是升级时最先碎的地方
一个数据抓取脚本,之前一直跑得好好的。某天换了台机器,或者顺手把依赖库升级了一下,脚本就开始报错,而且报的是一个看起来莫名其妙的 KeyError——某个参数名的键不存在。整个数据块直接变空。 现象 升级某个第三方接口库之后,抓取时报错: …
缺依赖被笼统报成“数据超时”——异常分类被抹平后排查方向全歪
某段数据长期 100% 缺失,日志里清一色地写着"数据超时"。于是你顺着"网络不稳"的方向使劲:加重试、加延迟、换时段、换线路——全都不管用。真凶其实跟网络毫无关系,只是被日志误导了太久。 现象 一个抓取任务,某类数据长期拿不到,日志里稳定…
Windows 上 python3 指向应用商店占位程序——用真实解释器的绝对路径
在 Windows 上跑 Python 脚本,命令敲下去,脚本没跑起来。你以为装好了 Python,实际上系统里叫 python3 的那个东西,根本不是真的解释器。 现象 在命令行里执行: 有时会弹出应用商店窗口,有时直接失败或者行为诡异。…
系统自带的 Python 报 No module named pip——发行版拆包与三种替代安装方式
在一台 Linux 服务器上,想给系统自带的 Python 装个包,结果第一句话就卡住了:连 pip 都没有。明明 python3 能跑,import 也没问题,偏偏装不了任何东西。 现象 执行安装命令时直接失败: 或者: python3 …
pip 装包有的成功有的编译失败——本地少的是编译工具链,不是网络
在一台新机器上批量装 Python 包,大部分包顺利装上,偏偏有几个反复失败,报错里全是 C 编译器的身影。第一反应往往是"网络又抽风了"或者"镜像源有问题",但换源、重试、换时段都无济于事——因为根本不是网络的事。 现象 执行安装命令时,…