代码之家  ›  专栏  ›  技术社区  ›  Frank Yellin

在PyCharm调试器下运行速度慢200倍的生成器理解

  •  1
  • Frank Yellin  · 技术社区  · 5 年前

    PyCharm职业2020.2

    下面是通过列表理解和通过生成器理解求和列表的一些示例代码

    def sum_with_generator():
        return sum(i * i for i in range(1, 1_000_000))
    
    def sum_with_list():
        return sum([i * i for i in range(1, 1_000_000)])
    
    def test():
        time1 = datetime.datetime.now()
        print(sum_with_generator())
        time2 = datetime.datetime.now()
        print(sum_with_list())
        time3 = datetime.datetime.now()
        print(f'Generator: {time2 - time1}; List: {time3 - time2}')
    
    if __name__ == '__main__':
        test()
    

    如果不使用调试器在PyCharm中运行此代码,则

    Generator: 0:00:00.055020; List: 0:00:00.092192
    

    都不到十分之一秒。我想生成器速度更快,因为它不生成列表。 但是如果我在调试器下运行同样的代码:

    Generator: 0:00:12.039189; List: 0:00:00.363289
    

    生成器代码现在比以前慢了200多倍。列表代码只慢了大约四倍。在我的实际代码中,这种减速使我的代码无法命名。

    这是PyCharm或Python的已知问题吗?有没有什么办法可以让经济放缓不那么严重?

    0 回复  |  直到 5 年前