如何测试LT代码的实现?

2024-06-16 10:17:32 发布

您现在位置:Python中文网/ 问答频道 /正文

受nickjohnson的博客Damn Cool Algorithms: Fountain Codes的启发,我决定尝试实现Luby Transform (LT) code。我刚刚把它推到GitHub;它是用python3编写的。在

我用一个很短的文件开发它,只包含“hello”,并在随机生成的1MB文件上进行了测试。软件似乎能有效地对文件进行编码和解码,只有原始文件的长度、块大小以及编码器和解码器之间共享的液滴。在

问题是,我该如何证明这确实是LT代码的忠实实现?如何证明解码算法是有效的?

我的目的是使用Python的counted references系统删除使用过的液滴。我如何检查是否确实发生了这种情况?

对代码本身的任何反馈也是受欢迎的,尽管它可能更适合作为GitHub上的注释(而不是答案)或问题。在


Tags: 文件代码ltgithub证明transform解码codes
1条回答
网友
1楼 · 发布于 2024-06-16 10:17:32

如果只想查看引用计数是否有效,可以在类中定义__del__方法。请注意,这将阻止循环GC处理这些类

另一种方法是查看类的refcount的更改,因为每个实例都保存对类的引用

>>> 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

相关问题 更多 >