用 Big Query 检查 tzfpy 下载情况

使用 Big Query 分析 tzfpy 包的下载来源和趋势,发现来自 Amazon Linux 的下载量显著增长,推测可能是商业公司的使用

 · 3 min · 1132 words · ringsaturn

Python 中批量将经纬度转换为时区名称方式对比

对比的维度有两个: 不同的 DataFrame 实现,这里用的是 Pandas 和 Polars,前者是最流行的框架,后者则是用 Rust 驱动的更节约内存的框架 不同的经纬度转时区库的实现,这里用的是 timezonefinder1 和 tzfpy2 相关代码可以在仓库中浏览 df-lng-lat-timezones-showcase ...

 · 1 min · 193 words · ringsaturn

tzf 的演进过程

介绍 tzf 的演进过程,从最初的 Go 实现到后来的 Python 扩展,再到现在的 Rust 实现,以及 PyO3 的封装。

 ·  · 6 min · 2685 words · ringsaturn

tzfpy Rust 重写

书接上文: 在 Go 中将经纬度转时区 经过一个周末的各种折腾,终于用 Rust 实现了 tzf 的功能,代码在 ringsaturn/tzf-rs。 又用了晚上跑了多次 CI 将 Python 移植也重写出来了 ringsaturn/tzfpy。 tzfpy 只要安装 >= 0.11.0 版本的就是用纯 Rust 实现的,在这个版本号之前都是 Python+CGO 实现的。 API 参数和之前一样,没有变化,但是索引命中的时候只需要 3~4 微妙,之前 Python+Go 需要 16 微妙。 最慢的单次查询 300 多微妙,timezonefinder(用 C 实现的多边形算法版本) 最慢的时候会有 1000 多微妙。 ...

 · 1 min · 471 words · ringsaturn

用 Go 编写 Python 扩展

警告 ...

 · 2 min · 526 words

Python 中经纬度转时区新的选择

上回 说到在 Go 里弄出了一个 tzf 的库,可以非常快速得到经纬度所在的时区信息。 当时的想法是用 Rust 实现出来然后用 maturin 制作 Python 扩展。 经过一段时间的摸索发现 Rust 的坑有点大,于是 2022-07-23 转换了方向,在 Python 里调用 Go 编译出来的 .so 文件。 验证 demo 还算简单 ringsaturn/tzf#11。 ...

 · 1 min · 229 words · ringsaturn