2024-12-24 08:00:00
在 BentoML lead 了几个重要的 feature,包括 1.3 和 1.4 两个大版本,以及 Codespaces 和 Comfy-Pack。
11 月参与 PyCon China 2024,见了许多网友,参加了代码厨房的活动,很开心。做了关于 Pydantic 的演讲。
11 月参与了 NebulaGraph 深圳的线下活动,做了关于 BentoML 的分享。
5 月份有荣幸与 Paul Romer 见面交流,并造就了 2024 年我最受关注的一篇文章。但于我来说会总结为机缘巧合,不必赋与我其他的光环。事实上从那以后我试图联系过 Romer 先生都没有得到回应。
开源了 FxZhihu 被很多人使用,感受到贡献了一些价值。
写作博客文章 15 篇。
由于 uv 的横空出世,PDM 无疑受到了一些冲击,发展明显变缓。
但我不是那么狭隘,人不能沉湎在过去的辉煌中举步不前。好用的工具得用,我自己平时也会用用 uv。PDM 也在 2.19 中加入了对 uv 的支持。
开源了 Tetos,一个 TTS 的统一 SDK 库。
其他的一些娱乐项目比如:
2024 依然目睹了 GenAI 和 LLM 的火爆,我个人也体验了 Cursor 最后又回到了 VSCode。
今年继续去了挺多地方。
1 月份汕尾
2 月珠海——中山
春节马六甲——吉隆坡
清明节广西梧州
4 月份上海
五一普者黑——弥勒
6 月份泉州
8 月份太原
国庆日本九州
11 月潮汕
PyCon China 上海 Again
12 月香港
最喜欢的书是《隳三都》,在历史非虚构里属于非常优秀的了。另外还有刘震云的《我叫刘跃进》,高级的黑色幽默。 电影没有最喜欢的,相对好的是《走走停停》《从 21 世纪安全撤离》和《死侍与金刚狼》。
只是 10 月份以后就没有看书和电影了,提不起兴趣来。
明年会怎么样,我也不知道。2025 是个平方数,希望是个好年。
$$ 2025 = 45^2 = 3^4 \times 5^2 $$
本文题图由 Ideogram 生成,其余图片,除 PyCon China 合影,均为本人拍摄。
2024-12-18 08:00:00
最近社区里有人提了一个PR^1,解决了一个潜在的内存泄漏问题。我认为这个问题在很多场景都容易忽略,所以分享在这里。
上代码
import gc
class Foo:
def bar(self):
print("bar")
foo = Foo()
print("Before", gc.get_count())
foo.bar = foo.bar
print("setattr", gc.get_count())
del foo
print("After", gc.get_count())
运行发现 foo
对象无法被正常回收,造成了内存泄漏。这是因为看似不起眼的一行 foo.bar = foo.bar
,实际上创建了一个循环引用。
点解?
因为,foo.bar
这个表达式,实际上执行了 Foo.bar.__get__(foo, Foo)
,返回了一个绑定了 foo
的方法,此方法中持有 foo
的引用。而 foo.bar = foo.bar
,相当于把这个结果缓存在了 foo.bar
属性上。之后的 foo.bar
只是从属性上取值,这样 foo
和该方法互相持有对方的引用,出现了循环引用。
现实中我们不太可能会写出 foo.bar = foo.bar
这样的代码,但是在 monkeypatch 场景下,可能很容易被坑到,比如:
import requests
resp = requests.get("https://example.com", stream=True)
resp._fp = CallbackFileWrapper(resp, callback)
...
上述代码 patch 了 requests
库的 Response
对象,让它在被读取完成中调用我们指定的 callback
函数。这里 CallbackFileWrapper
会持有 resp
的引用。
如何避免?
在上述例子中,我们可以使用 weakref 来避免循环引用:
import weakref
class CallbackFileWrapper:
def __init__(self, resp, callback):
self.resp_ref = weakref.ref(resp)
self.callback = callback
def read(self, size):
resp = self.resp_ref()
if resp is None:
return b""
read_bytes = resp.read(size)
if not read_bytes:
self.callback(resp)
2024-11-07 08:00:00
我女儿第一天上幼儿园回来,我就拿着群里他们班级的合照,挨个问她每个小朋友都叫什么名字。一方面是想看看她集体融入得怎么样,另一方面是自己想留个底,争取每个小朋友的脸和名字都能对上。 她当然不能每个都叫出名字来,但配合群里其他家长聊天的信息,三天后我就基本能全叫出名字了。有回我正在问,丈母娘见了在旁说,「知道这个有什么用,你又不是老师。」面对这种言论,我只能一笑了之。
我觉得,总会有用的。在我看来,至少有下面几个用处:
但丈母娘这个看法就见识短浅了,她才是接送孩子的主力。我已经不知多少次听她说路上碰见个幼儿园同学,做了什么举动,却不知道是谁。
今天去幼儿园参加家长开放日的活动,其实就是小朋友在上课活动时家长在旁观看。户外休息时,很多小朋友围到我身边来,因为他们发现我能叫对他们每一个人的名字,甚至还知道小名。于是就疯狂地来考我,乐意跟我聊天。 我突然觉得,两年前做过的功课没有白做,今天派上了用场,不是什么大用,能温暖我一阵子,也足够了。
所以,你看过的每一本书,玩过的游戏,走过的路,都不会浪费。只是你还没找到用处罢了,又或者它们已经内化在你的个人气质中了。
功不唐捐。
2024-10-20 08:00:00
import Tweet from '@components/Tweet';
我一直在思考要在博客写些什么,我能写什么。刚好看到了 @laike9m 的这篇推文:
<Tweet client:only="react" id="1847557409457524950" />
有很多观点我是不敢在网上表达的,只能和女朋友说说。有的是因为太个人化,有的是违反了普遍的认知,以及第三种情况:解释清楚要花太多时间,而我的时间本就不多。于是每次都是想想,很快便打消了这个念头了。
确实,很多时候阻挠我表达的,是四个字「大可不必」。我要表达的观点会有人认同吗?或至少,会引发一些思考吗?如果两者的答案都是否,那就「大可不必」发表了。或者即使,观点或许有一些价值,那么我要怎么表达呢?是不是得安排逻辑结构、旁征博引、收集数据案例,这些值不值得?「大可不必」,这四个字又在我脑子里冒了出来。
于是,很多想法可能就这样,只停留在了熄灯后的卧谈,甚至,更普遍的情况是,只停留在了脑海里,永远没有见天日的机会。
我们不知不觉中,给自己的表达设定了一个阈值,超过了这个值的,才会出现在对外分享的表达中。而要克服这个阈值,很需要一些能量。我死去的半导体课上学过的知识又突然袭击了我,价带电子需要一定能量,才能跃迁到导带。
所以我有时非常羡慕一些生活博主(特别是居住在国外的),坐了什么公共交通上班,吃了什么饭,日落时没云彩,下雨忘了带伞,都可以成为他们笔下津津乐道的话题。我心想要是按他们这个阈值来,那我每天不得发 24 条动态。
但有时候我又会想,大可不必。
感谢今天战胜了我的阈值的我的表达欲。
2024-07-24 08:00:00
上周末《从 21 世纪安全撤离》(后简称《21》)在深圳点映,一直很期待导演李阳的作品,距离《李献计历险记》已过去十多年了,那时房祖名还在呢。于是一出来就买了票和老婆一起去看了。看完后我和朋友聊的感想是:
我最大感想是,感谢所有资方,感谢电影工业,感谢演职人员,信任李阳,帮他完成这个作品。
没错,李阳在所有中国导演中都是一个异类,只有他能拍出这种味道的东西。怪诞、热血、信息量爆炸、莫名其妙。可以预见,这将会是一种评论两极分化的片子,密集的视效和神奇的转折之下,是破碎的剧情和二维的人物。我个人是很喜欢的,我记得在临近结尾的时候,吴晓亮演的角色在家里打《街霸》,我疯狂地扯我老婆,说这是《我爱我家》里贾家的布景啊哈哈哈,但她没什么反应。有时 GET 到了一个彩蛋,我会在内心想:这就是给我准备的啊,我懂你的梗,我厉害吧。我突然有些明白了,喜欢这部电影的会是什么人群,诚然导演是拍他自己喜欢的事物,他是个老二次元了,没有刻意要迎合谁,但这个受众人群的画像的轮廓,却渐渐在我脑中浮现了出来。我甚至于认为:
李阳这部作品等了这么久,难说不是因为这群人成为了社会中流,时机才成熟了。
这群人大概是:从小看日本动画长大、玩街机、爱摇滚、听唐朝乐队,现在喜欢二次元,喜欢上破站,喜欢宫骑英高,喜欢新民谣,喜欢万能青年旅店。
如果你全中了,可以在评论区扣个 666。问题是,这些就代表了全部的人吗?那些不喜欢这些的,看不懂《21》的,也是和我们同龄的人。我个人的话,符合 70% 吧,有些事,不喜欢就是不喜欢。我们曾认为我们是非主流,然而这已俨然成为主流,在中推、在知乎、在即刻、在小红书,到处都是同类。以至于那些对这些本不感冒的人,也硬要变成一分子,仿佛你不喜欢这些,就会被排斥在外,比之大城市的排外,有过之而不及。我不希望在这里表达对这部电影的喜欢,会排斥到了其他人。我写过《我们生活在差异里》,最后一句是:
周围的人大都是相似的,但除此之外存在着更多其他的人,我需要认清这种差异,并包容它。
所以最后,我推荐你去看这部电影,但如果你看了之后觉得不好,甚至垃圾,也欢迎你回复对这部电影的看法。
This message is used to verify that this feed (feedId:41342818704332806) belongs to me (userId:41749083576628224). Join me in enjoying RSS on the next generation information browser https://follow.is.