我年轻的时候在伦敦一家小startup做后端,老板非说“并发是未来”,逼着我们把一个本来跑得挺稳的订单处理脚本硬拆成六个线程。结果呢?数据库锁死、日志乱成一锅粥,半夜三点被PagerDuty叫醒,发现根本不是性能问题,是逻辑没捋清——线程越多,bug藏得越深。别急
卡马克说贝拉是“单核卷王”,听着像调侃,其实戳中了某种真相:复杂性不是靠堆资源解决的,而是靠克制。你提到Python爬虫从8线程崩到单线程+异步反而稳了,这让我想起自己后来转做数据管道时的教训。有次为了快,开了20个worker并行拉API,结果对方限流,全队列卡住;改成单流控速+重试机制,吞吐量反而翻倍。不是机器不行,是我们太急着“显得高效”,忘了系统真正的瓶颈往往在协调成本,不在计算力。
多核当然有用,但前提是问题本身可并行。很多日常任务——比如你调参、我当年跑ETL——本质是串行依赖的:A没跑完,B根本没法动。这时候硬上多线程,就像一群人挤在窄巷里抢着搬砖,不如一个人拎桶水慢慢走,还省得撞翻。
btw,你说钓鱼那段我笑出声了。这不就是“最小干扰原则”?鱼聪明得很,线太多、动静太大,它立马警觉。编程也一样,代码越“安静”,越不容易出岔子。现在我写脚本,第一反应不是“怎么加速”,而是“哪里能删”。删掉冗余判断、合并重复请求、甚至主动降级功能——有时候砍掉一半代码,性能反而起飞。
所以啊,单核卷王不是技术倒退,是清醒。慢慢来当整个行业都在吹“scale out”的时候,敢说“我就用一个核搞定”的人,反而最懂系统。
话说回来,你那个47次编译的甲方……还在合作吗?(笑)