Python 是否值得使用IMAP压缩(放气)?

Python 是否值得使用IMAP压缩(放气)?,python,imap,jakarta-mail,imaplib,gmail-imap,Python,Imap,Jakarta Mail,Imaplib,Gmail Imap,Gmail支持IMAP压缩扩展(),特别是()又名zlib/gzip 我通常不是Python程序员,但我使用一个快速测试脚本来确定启用或不启用压缩时的性能 from time import time import imaplib2, string def cb((response, cb_arg, error)): typ, data = response #print 'Message %s\n%s\n' % (cb_arg, data[0][5]) IMA

Gmail支持IMAP压缩扩展(),特别是()又名zlib/gzip

我通常不是Python程序员,但我使用一个快速测试脚本来确定启用或不启用压缩时的性能

from time import time
import imaplib2, string

def cb((response, cb_arg, error)):
        typ, data = response
        #print 'Message %s\n%s\n' % (cb_arg, data[0][5])

IMAP_SERVER='imap.gmail.com'
IMAP_PORT=993
IMAP_USERNAME='*********'
IMAP_PASSWORD='*********'

def gogmail(compress):
    start = time()
    M = imaplib2.IMAP4_SSL(IMAP_SERVER, IMAP_PORT, debug=0)
    M.login(IMAP_USERNAME, IMAP_PASSWORD)
    if(compress):
        M.enable_compression()
    M.SELECT(readonly=True)
    typ, data = M.SEARCH(None, 'ALL')
    fetch_list = string.split(data[0])[-100:]
    for num in fetch_list:
        M.FETCH(num, '(RFC822)', callback=cb, cb_arg=num)   
    M.LOGOUT()
    end = time()
    print end - start

print 'Compressed  '
print '------------'

for x in range(0, 50):
    gogmail(1)

print 'Uncompressed'
print '------------'

for x in range(0, 50):
    gogmail(0)
如果我在Python代码中犯了一个明显的新手错误,请纠正我

我已经运行这个测试脚本好几次了。有时压缩访问的平均速度更快,有时则不然。平均值没有太大差异,访问时间也有很大差异(单个收件箱访问100封邮件可能需要4到17秒)。一致的结果将使我的决定更容易!访问是通过SSL进行的,我想这里面可能有一些固有的压缩(我不知道)

您认为在访问Gmail IMAP时使用压缩值得吗?

顺便说一句,我想使用JavaMail(而不是Python),但我知道我需要大量定制JavaMail以支持压缩(可能使用)。已经有人这样做了吗?值得吗


我感谢你的反馈。非常感谢。

我不认为启用压缩会有很大的不同,因为100条消息只是一小部分数据。假设一条消息是1KB(一条长的明文消息),那么您的收件箱是100KB。让我们假设压缩比为5:1(充其量不太可能),因此压缩下载现在为20KB

如今,任何健全的互联网连接都至少运行1Mbps,或125KB/s。因此,在这些高估的假设下,您可以节省不到一秒钟的数据传输成本。这与gmail的连接延迟和处理过程相形见绌


另一方面,启用压缩会带来什么损失?

我不认为启用压缩会带来很大的不同,因为100条消息只是一小部分数据。假设一条消息是1KB(一条长的明文消息),那么您的收件箱是100KB。让我们假设压缩比为5:1(充其量不太可能),因此压缩下载现在为20KB

如今,任何健全的互联网连接都至少运行1Mbps,或125KB/s。因此,在这些高估的假设下,您可以节省不到一秒钟的数据传输成本。这与gmail的连接延迟和处理过程相形见绌


另一方面,启用压缩功能会损失什么?

您在PC上,有人在手机上使用邮件。压缩当然是有意义的。rfc对压缩的效率有着完全不同的看法:rfc所说的是基于实际的测量,而得出不同结论的原因是它基于更合理的消息大小。1k甚至不包括今天典型消息的标题,所有的引用和HTML都会放大消息体的大小。还有附件。压缩的一个重要原因是IMAP。主要是在同步文件夹时。我见过大型文件夹在一次查询中获取数兆字节的UID号。如果启用压缩功能,这将减少80%。你在电脑上,有人在手机上使用邮件。压缩当然是有意义的。rfc对压缩的效率有着完全不同的看法:rfc所说的是基于实际的测量,而得出不同结论的原因是它基于更合理的消息大小。1k甚至不包括今天典型消息的标题,所有的引用和HTML都会放大消息体的大小。还有附件。压缩的一个重要原因是IMAP。主要是在同步文件夹时。我见过大型文件夹在一次查询中获取数兆字节的UID号。如果启用压缩,这将减少80%。您的示例完全受延迟限制。如果您一次获取数百条消息,您可能会注意到不同之处。然而,它也可能对使用计费连接的用户(例如,手机客户端)产生影响。您的示例完全受延迟限制。如果您一次获取数百条消息,您可能会注意到不同之处。然而,它也可能对使用计量连接的人(例如,手机客户端)产生影响。