longxi7997

Python性能优化

2021-07-20 · 1 min read

https://www.cnblogs.com/venvive/p/11601190.html

性能评价分析

  1. time|datetime|arrow|time.perf_counter()|timeit.default_timer计时

    low

  2. timeit

    总结:直接看模块化和default_timer()

    1. 单行测试

      import timeit
      print(timeit.timeit('a=1'))
      print(timeit.repeat('a=1')) #默认五次,输出数组
      
    2. 多行测试

      import timeit
      
      print(timeit.timeit(stmt='a=1;b=2;c=a+b;'))
      print(timeit.timeit(stmt="""
      a=1;
      b=2;
      c=a+b;
      """))
      
    3. 模块化

      建议加上重复次数,排除引入的影响

      import timeit
      import random
      
      # 本地函数
      def func1():
          return random.randint(1, 10)
      
      # 依赖其他函数
      def func2():
          return func1()
      
      
      print(timeit.timeit('func1()', setup='from __main__ import func1'))
      print(timeit.timeit('func2()', setup='from __main__ import func2',number=100))
      
  3. time() 装饰器

  4. profile

  5. cProfile

  6. line_profiler

  7. memory_profiler

  8. PyCharm

  9. pycallgraph

  10. objgraph

性能优化的几种情况

计算密集型

GIL

JIT

IO密集型

hiredis