受到尼克约翰逊博客Damn Cool Algorithms: Fountain Codes的启发,我决定实施Luby Transform (LT) code。我把它推到GitHub;它是用Python 3编写的。
我使用一个非常短的文件开发它,只包含“hello”并在随机生成的1MB文件上进行测试。该软件似乎有效地编码和解码文件,只有原始文件的长度,块大小和编码器与解码器之间共享的水滴。
问题是,我该如何证明这确实是LT代码的忠实实现?如何证明解码算法有效?
我的意图是使用Python的计数引用系统删除使用的液滴。 如何检查确实发生了这种情况?
对代码本身的任何反馈也是受欢迎的,但它可能更适合作为评论(而不是答案)或GitHub上的问题。
答案 0 :(得分:2)
如果您只想查看引用计数是否有效,可以在类中定义__del__
方法。请注意,这将阻止循环GC处理这些类
另一种方法是查看对类的引用计数的更改,因为每个实例都包含对类的引用
>>> from sys import getrefcount
>>> class Obj(object):
... pass
...
>>> sys.getrefcount(Obj)
5
>>> obj_list=[Obj() for x in range(5)]
>>> sys.getrefcount(Obj)
10
>>> obj_list[:3]=[]
>>> sys.getrefcount(Obj)
7