【问题标题】:First call to pytz.timezone is slow in virtualenv在 virtualenv 中第一次调用 pytz.timezone 很慢
【发布时间】:2013-12-28 08:24:09
【问题描述】:

我已经在 virtualenv 中安装了 pytz(v2013.8,但它发生在 2013.b、2011k)。第一次调用

pytz.timezone("US/Eastern")

大约需要 4 秒。在常规环境中,这基本上是瞬时的。

有没有人有办法让它运行得更快?

【问题讨论】:

  • 这在未来可能会很有帮助,干得好! :) 当您需要代表时,考虑重新发布作为答案。

标签: python virtualenv pytz


【解决方案1】:

我实际上是通过四处玩耍和查看源代码找到了答案。由于它从 egg 中获取其时区设置,并且对 timezone 的第一次调用必须检查所有时区文件是否存在,因此第一次调用可能会很慢,具体取决于操作系统如何找到这些文件。如果 pytz 是使用apt-get install python-tz 安装的,那么调用会命中未压缩的文件并且速度非常快。如果它是使用easy_install pytz 安装的,那么它会一遍又一遍地点击一个压缩文件并且速度较慢。

所以解决办法就是解压。幸运的是 pip 有一个方便的命令。

tl;博士

pip unzip pytz

【讨论】:

【解决方案2】:

似乎在 Windows 中只需删除 pytz-2013.9-py2.7.egg

【讨论】:

    【解决方案3】:

    我很难跑

    pip 解压 pytz

    因为它说它找不到包。我发现一个可行的解决方法是编辑 setup.py 文件并替换

    zip_safe=False

    。 (将其设置为 False)。然后再次运行安装程序:

    python setup.py 安装

    这也解决了我加载时间慢的问题。

    【讨论】:

      【解决方案4】:

      其实可以通过设置环境变量PYTZ_TZDATADIR来指定zoneinfo的位置:

      export PYTZ_TZDATADIR=/usr/share/zoneinfo
      

      仅当未设置 PYTZ_TZDATADIR 时才读取压缩的 zoneinfo 文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-23
        • 1970-01-01
        • 1970-01-01
        • 2012-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多