“程序设计”目录存档

Python pdfplumber内存泄露问题解决方案

2022年09月25日,星期日

最近用Python的pdfplumber库处理PDF文件,在处理一个1000多页的PDF文件时,内存使用不断飙升,直至把16G内存全部耗尽。

代码除了使用pdfplumber之外,还使用了pandas做数据分析,一开始还以为是pandas部分的代码存在内存泄露,调试了很久才发现是pdfplumber造成的内存泄露。

解决方案在官方的issue中有提到, Memory issues on very large PDFs, 添加如下的代码即可:


with pdfplumber.open("data/my.pdf") as pdf:
    for page in pdf.pages:
        run_my_code()
        page.flush_cache()

又遇VBS中&H前缀十六进制数的陷阱

2016年02月18日,星期四

第二次掉坑里了。

WScript.Echo &H100D4 And &H0000FF00

那么问题来了,上面的代码输出什么?为什么会这样?

答案见《VBS中&H前缀十六进制数的陷阱》。

用Tiny C Compiler编译Lua

2015年11月29日,星期日

很久以前写过一篇《Windows下用TCC编译Lua源码》,现在Lua已经更新到Lua 5.3.2了,想编译一个玩玩,但是发现之前的脚本是把源文件hard code进去的,对于最新版的没法用,于是改进了一下脚本。

(更多…)

VBS获取GZIP压缩的HTTP内容

2015年10月17日,星期六

不少网站为了提高加载速度,启用HTTP服务器的GZIP压缩功能,当客户端发送的HTTP请求中声明可以接受GZIP编码时,服务器自动对HTTP响应内容进行GZIP压缩。但是,在VBS中想自动对GZIP编码进行解压就没有那么容易了。

(更多…)

C语言标准库函数rand与多线程

2015年08月26日,星期三

今天在一个多线程程序中调用了C标准库函数rand,结果却发现每个线程生成的随机数都是一样的,甚至每次运行程序生成的随机数都是一样的。

(更多…)