方法:
def f1(lIn): l1 = sorted(lIn) l2 = [i for i in l1 if i<0.5] return [i*i for i in l2] def f2(lIn): l1 = [i for i in lIn if i<0.5] l2 = sorted(l1) return [i*i for i in l2] def f3(lIn): l1 = [i*i for i in lIn] l2 = sorted(l1) return [i for i in l1 if i<(0.5*0.5)] import random import cProfile lIn = [random.random() for i in range(100000)] cProfile.run('f1(lIn)') cProfile.run('f2(lIn)') cProfile.run('f3(lIn)')
结果:
D:PythonPython38python.exe D:/python_learn/lambda_test/test.py 7 function calls in 0.036 seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.002 0.002 0.036 0.036 <string>:1(<module>) 1 0.000 0.000 0.034 0.034 test.py:118(f1) 1 0.011 0.011 0.011 0.011 test.py:120(<listcomp>) 1 0.006 0.006 0.006 0.006 test.py:121(<listcomp>) 1 0.000 0.000 0.036 0.036 {built-in method builtins.exec} 1 0.017 0.017 0.017 0.017 {built-in method builtins.sorted} 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} 7 function calls in 0.018 seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.001 0.001 0.018 0.018 <string>:1(<module>) 1 0.000 0.000 0.017 0.017 test.py:122(f2) 1 0.005 0.005 0.005 0.005 test.py:123(<listcomp>) 1 0.003 0.003 0.003 0.003 test.py:125(<listcomp>) 1 0.000 0.000 0.018 0.018 {built-in method builtins.exec} 1 0.008 0.008 0.008 0.008 {built-in method builtins.sorted} 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} 7 function calls in 0.031 seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.003 0.003 0.031 0.031 <string>:1(<module>) 1 0.000 0.000 0.029 0.029 test.py:126(f3) 1 0.007 0.007 0.007 0.007 test.py:127(<listcomp>) 1 0.005 0.005 0.005 0.005 test.py:129(<listcomp>) 1 0.000 0.000 0.031 0.031 {built-in method builtins.exec} 1 0.017 0.017 0.017 0.017 {built-in method builtins.sorted} 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} Process finished with exit code 0