Python中缓慢的文件处理

2024-09-20 06:52:51 发布

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

我正在尝试使用Python。瞄准是连续读取一个大小为(100字节)的文件,打包并通过套接字发送。这些文件是从目录中读取的。在

问题:当我连续运行程序时,执行时间在增加。最初,执行时间不到一秒,后来达到8~10秒。我不知道为什么延迟。如果任何人都可以对这个问题有所了解,这样会更有帮助。在

这里我附上了我的代码。。。在

def handlefile(filename):
        for sat in range(len(Numfiles)):
                filename = 
                fsize = os.path.getsize(filename)
                if fsize != 100:
                        continue
                rfile = open(filename,'rb')
                text = rfile.read()
                msg = struct.unpack("<100b",text)
                for i in range(len(msg)):
                        packMessage  = packMessage + struct.pack("<b",msg[i])
                print "time:",datetime.datetime.now() - startTime

文件是二进制文件。在

初始时间:671ms

连续执行10次以上,时间增长缓慢。 最后几个值, 671毫秒 . . . . 9.879毫秒 88.686毫秒 135.954毫秒

我使用的是python-2.5.4版本。在

如果有人遇到过类似的问题。请给我一些输入。在

谢谢 达斯


Tags: 文件textinfordatetimelen字节时间
2条回答

你检查过你的进程打开的文件句柄数了吗?您可能需要使用with-statement确保它们在不再需要时关闭:

with open(filename, 'rb') as rfile:
    text = rfile.read()
    # etc.

with-块离开时,文件将自动关闭。在

据我所见,packMessage正在单调增长:

packMessage  = packMessage + struct.pack("<b",msg[i])

如果重复多次,它可能会变大,消耗大量内存,并且在某个时候应用程序可能会变得更慢。运行程序时,请尝试查看top或{}(在top中,按M按内存分配排序,f添加常驻内存字段)。在

从性能的角度来看,每次打开和读取同一个文件并不是最好的解决方案。考虑在进入循环之前只读一次。在

相关问题 更多 >