为什么下面的下载操作在Jython中的运行速度是Python的1/10?

为什么下面的下载操作在Jython中的运行速度是Python的1/10?,python,download,jython,Python,Download,Jython,我在python和jython中运行以下代码: import urllib2 import time clock = time.clock() def dlTest(): global clock url = "http://##.##.##.##/EXACTADDRESSREDACTED/file.extension" print 'downloading update from: ' + url _ = urllib2.urlopen(url).read()

我在python和jython中运行以下代码:

import urllib2
import time
clock = time.clock()

def dlTest():
    global clock
    url = "http://##.##.##.##/EXACTADDRESSREDACTED/file.extension"
    print 'downloading update from: ' + url
    _ = urllib2.urlopen(url).read()
    print 'finished in ' + str(time.clock() - clock)
    clock = time.clock()

dlTest()
我惊讶地发现,尽管有许多重复的测试,jython执行此下载几乎需要10秒,而Python只需要1/2秒。有什么想法吗

我使用的是Python 2.7和jython 2.5.3,我下载的文件是40MB,在两次下载中都完好无损。我只是没有在上面的代码中将其保存在磁盘上,因为我试图保持示例的整洁。在将数据写入磁盘时,测试的执行方式与未写入磁盘时相同。下载是在本地连接上进行的,而不是在internet连接上进行的,python实现的速度是预期的速度


进一步的测试表明,Jython在执行开始后开始下载似乎需要更长的时间(4秒,而不是0.06),并且执行实际下载的速度更慢(5秒,而不是0.5)。

10秒?听起来好像有人在做反向DNS查找,但失败了……只需设置一个测试来检查这种可能性,@kindall。情况似乎并非如此。文件首次出现在磁盘上与下载完成之间的时间仍然是几秒钟。实际下载速度确实慢了,不仅仅是执行时间。cython和Jython之间的套接字差异有很多。我突然想到的一件事是,Jython可能正在尝试IPV6,目前几乎所有东西上都启用了linklocal地址,但如果它试图路由到internet,可能会导致一些问题。当Python.org开始使用IPV6地址响应时,我遇到了可怕的延迟,因为它一直试图通过IPV6进行连接,最终返回到IPV4。感谢您的建议,但根据您链接的页面,该错误是特定于Jython在较旧版本的JVM上的实现的。