我正在编写一个自定义文件系统爬虫,它通过sys.stdin传递数百万个glob进行处理.我发现在运行脚本时,它的内存使用量随着时间的推移而大量增加,整个事情几乎停止了.我在下面写了一个小例子来说明问题所在.我做错了什么,或者我在Python/glob模块中发现了一个错误?(我使用的是python 2.5.2).
#!/usr/bin/env python
import glob
import sys
import gc
previous_num_objects = 0
for count, line in enumerate(sys.stdin):
glob_result = glob.glob(line.rstrip('\n'))
current_num_objects = len(gc.get_objects())
new_objects = current_num_objects - previous_num_objects
print "(%d) This: %d, New: %d, Garbage: %d, Collection Counts: %s"\
% (count, current_num_objects, new_objects, len(gc.garbage), gc.get_count())
previous_num_objects = current_num_objects
Run Code Online (Sandbox Code Playgroud)
输出如下:
(0) This: 4042, New: 4042, Python Garbage: 0, Python Collection Counts: (660, 5, 0) (1) This: 4061, New: 19, Python Garbage: 0, Python Collection Counts: (90, 6, 0) (2) This: …