ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Python-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ Π°Π½Π°Π»ΠΈΠ· ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ / Π₯Π°Π±Ρ
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ β ΡΡΠΎ Π½Π΅ΠΎΡΡΠ΅ΠΌΠ»Π΅ΠΌΠ°Ρ ΡΠ°ΡΡΡ Π»ΡΠ±ΡΡ ΡΠ°Π±ΠΎΡ ΠΏΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΡΠ±ΠΎΠΉ ΠΎΠΏΡΡ, Π»ΡΠ±ΡΠ΅ Π·Π½Π°Π½ΠΈΡ Π² ΡΡΠ΅ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΆΠ΅ Ρ Π²Π°Ρ Π΅ΡΡΡ, Π½Π΅ ΠΏΡΠΈΠ½Π΅ΡΡΡ ΠΎΡΠΎΠ±ΠΎΠΉ ΠΏΠΎΠ»ΡΠ·Ρ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ Π·Π½Π°Π΅ΡΠ΅ ΠΎ ΡΠΎΠΌ, Π³Π΄Π΅ ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠΎΠΈΡΠΊ ΡΠ·ΠΊΠΈΡ ΠΌΠ΅ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ Π² Π΄Π΅Π»Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π±ΡΡΡΡΠΎ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠ² Π½Π΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠΈΠ»ΠΈΠΉ.
Π ΡΡΠΎΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π΅ ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Π½Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°ΡΡ ΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ ΠΊΠΎΠ΄Π°, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ ΠΈ Ρ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΠΈ Ρ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ΄Π΅ΡΡ ΠΆΠ΅ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ (ΠΏΠΎΡΡΠΈ Π±Π΅Π·ΠΎ Π²ΡΡΠΊΠΈΡ ΡΡΠΈΠ»ΠΈΠΉ) ΠΏΡΠΎΡΡΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ Π±ΠΎΡΠΎΡΡΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΡΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° Π΄Π°ΠΆΠ΅ ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΈΡΠ°Π½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ»ΡΡΡΠΈΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ.
ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ·ΠΊΠΈΡ ΠΌΠ΅ΡΡ
Π Π΄Π΅Π»Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π»Π΅Π½ΠΈΡΡΡΡ β ΡΡΠΎ Ρ ΠΎΡΠΎΡΠΎ. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΡΡΠ°ΡΡΡΡ ΠΏΠΎΠ½ΡΡΡ ΡΠΎ, ΠΊΠ°ΠΊΠ°Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ Π·Π°ΠΌΠ΅Π΄Π»ΡΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π°. ΠΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π½Π°ΠΉΡΠΈ ΡΠ΅ ΠΌΠ΅ΡΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΎΠΈΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ°ΠΊΠΈΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ΄Π°ΡΡΡΡ Π² Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡΠ±ΠΎΠΊΠΎΠΌ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ.
Π‘Π°ΠΌΡΠΉ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄Π»Ρ ΡΡΠΈΡ
ΡΠ΅Π»Π΅ΠΉ Python-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ β ΡΡΠΎΒ cProfile
. ΠΡΠΎ β ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΏΠΎΡΠΎΠ±Π΅Π½ ΠΈΠ·ΠΌΠ΅ΡΡΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΠΎΠ΄ΠΈΡ (ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ)Β e
Β Π² ΡΡΠ΅ΠΏΠ΅Π½ΡΒ X
:
# some-code.py from decimal import * def exp(x): Β Β Β Β getcontext().prec += 2 Β Β Β Β i, lasts, s, fact, num = 0, 0, 1, 1, 1 Β Β Β Β while s != lasts: Β Β Β Β Β Β Β Β lasts = s Β Β Β Β Β Β Β Β i += 1 Β Β Β Β Β Β Β Β fact *= i Β Β Β Β Β Β Β Β num *= x Β Β Β Β Β Β Β Β s += num / fact Β Β Β Β getcontext().prec -= 2 Β Β Β Β return +s exp(Decimal(3000))
ΠΡΡΠ»Π΅Π΄ΡΠ΅ΠΌ ΡΡΠΎΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Ρ ΠΏΠΎΠΌΠΎΡΡΡΒ
:
python -m cProfile -s cumulative some-code. py Β Β Β Β Β Β Β Β Β 1052 function calls (1023 primitive calls) in 2.765 seconds Β Β Β Ordered by: cumulative timek Β Β Β ncallsΒ tottimeΒ percallΒ cumtimeΒ percall filename:lineno(function) Β Β Β Β Β Β 5/1Β Β 0.000Β Β 0.000Β Β 2.765Β Β 2.765 {built-in method builtins.exec} Β Β Β Β Β Β Β Β 1Β Β 0.000Β Β 0.000Β Β 2.765Β Β 2.765 some-code.py:1(<module>) Β Β Β Β Β Β Β Β 1Β Β 2.764Β Β 2.764Β Β 2.764Β Β 2.764 some-code.py:3(exp) Β Β Β Β Β Β 4/1Β Β 0.000Β Β 0.000Β Β 0.001Β Β 0.001 <frozen importlib._bootstrap>:986(_find_and_load) Β Β Β Β Β Β 4/1Β Β 0.000Β Β 0.000Β Β 0.001Β Β 0.001 <frozen importlib._bootstrap>:956(_find_and_load_unlocked) Β Β Β Β Β Β 4/1Β Β 0.000Β Β 0.000Β Β 0.001Β Β 0.001 <frozen importlib._bootstrap>:650(_load_unlocked) Β Β Β Β Β Β 3/1Β Β 0.000Β Β 0.000Β Β 0.001Β Β 0.001 <frozen importlib._bootstrap_external>:842(exec_module) Β Β Β Β Β Β 5/1Β Β 0.000Β Β 0.000Β Β 0.001Β Β 0.001 <frozen importlib._bootstrap>:211(_call_with_frames_removed) Β Β Β Β Β Β Β Β 1Β Β 0.000Β Β 0.000Β Β 0.001Β Β 0.001 decimal.py:2(<module>) ...
Π’ΡΡ ΠΌΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ ΠΎΠΏΡΠΈΠ΅ΠΉΒ -s cumulative
Β Π΄Π»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π²ΡΡ
ΠΎΠ΄Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΏΠΎ ΡΡΠΌΠΌΠ°ΡΠ½ΠΎΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π·Π°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠΌΡ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΏΠΎΠΈΡΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΡΡ
ΡΡΠ°ΡΡΠΊΠΎΠ² ΠΊΠΎΠ΄Π°. ΠΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΏΠΎΡΡΠΈ Π²ΡΡ Π²ΡΠ΅ΠΌΡ (ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 2,764 ΡΠ΅ΠΊΡΠ½Π΄Ρ) Π² Ρ
ΠΎΠ΄Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅Π°Π½ΡΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΡΠ»ΠΎ ΠΏΠΎΡΡΠ°ΡΠ΅Π½ΠΎ Π² ΡΡΠ½ΠΊΡΠΈΠΈΒ
.
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½Π΅ΡΡΠΈ ΠΏΠΎΠ»ΡΠ·Ρ, Π½ΠΎ Π΅Π³ΠΎ, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ.Β cProfile
Β ΡΠ½Π°Π±ΠΆΠ°Π΅Ρ Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ Π»ΠΈΡΡ ΠΎ Π²ΡΠ·ΠΎΠ²Π°Ρ
ΡΡΠ½ΠΊΡΠΈΠΉ, Π½ΠΎ Π½Π΅ ΠΎΠ± ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
ΡΡΡΠΎΠΊΠ°Ρ
ΠΊΠΎΠ΄Π°. ΠΡΠ»ΠΈ Π²ΡΠ·Π²Π°ΡΡ ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΠΎΡΠΎΠ±ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, Π²ΡΠΎΠ΄Π΅Β append
, Π² ΡΠ°Π·Π½ΡΡ
ΠΌΠ΅ΡΡΠ°Ρ
, ΡΠΎ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ±ΠΎ Π²ΡΠ΅Ρ
Π΅Ρ Π²ΡΠ·ΠΎΠ²Π°Ρ
Π±ΡΠ΄ΡΡ ΡΠΎΠ±ΡΠ°Π½Ρ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΎΡΡΡΡΠ°Β cProfile
. Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΈ ΠΊ ΡΠΊΡΠΈΠΏΡΠ°ΠΌ, Π²ΡΠΎΠ΄Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π»ΠΈ Π²ΡΡΠ΅. ΠΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π»ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Ρ
ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π½Π΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π°Π½Π½ΡΡ
Π΄Π»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΡΡΡΠ°.
ΠΠ½ΠΎΠ³Π΄Π° ΡΠ°ΠΊΠ°Ρ ΡΠΎΡΠΊΠΎΡΡ, ΠΊΠ°ΠΊ Π»ΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΎΡΠ»Π°Π΄ΠΊΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π½Π΅ Π΄ΠΎΡΡΡΠΏΠ½Π°. ΠΠ»ΠΈ Π±ΡΠ²Π°Π΅Ρ ΡΠ°ΠΊ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ, ΡΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ, Β«Π½Π° Π»Π΅ΡΡΒ», ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½-ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ. Π ΡΠ°ΠΊΠΈΡ
ΡΠΈΡΡΠ°ΡΠΈΡΡ
ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌΒ py-spy
. ΠΡΠΎ β ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ, ΡΠΏΠΎΡΠΎΠ±Π½ΡΠΉ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΆΠ΅ Π·Π°ΠΏΡΡΠ΅Π½Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ β ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½Π΅, ΠΈΠ»ΠΈ Π½Π° Π»ΡΠ±ΠΎΠΉ ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅:
pip install py-spy python some-code.py & [1] 1129587 ps -A -o pid,cmd | grep python ... 1129587 python some-code.py 1130365 grep python sudo env "PATH=$PATH" py-spy top --pid 1129587
Π ΡΡΠΎΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ΄Π° ΠΌΡ ΡΠ½Π°ΡΠ°Π»Π° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΒ py-spy
, Π° ΠΏΠΎΡΠΎΠΌ, Π² ΡΠΎΠ½Π΅, Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΠΏΠΎΠΊΠ°Π·Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΏΡΠΎΡΠ΅ΡΡΠ° (PID), Π½ΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅ΠΌ, ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π»Ρ Π΅Π³ΠΎ Π²ΡΡΡΠ½Π΅Π½ΠΈΡ, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉΒ ps
. Π, Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌΒ py-spy
Β Π² ΡΠ΅ΠΆΠΈΠΌΠ΅Β top
, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ Π΅ΠΌΡ PID. ΠΡΠΎ Π²Π΅Π΄ΡΡ ΠΊ Π²ΡΠ²ΠΎΠ΄Ρ Π΄Π°Π½Π½ΡΡ
, ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ
ΠΎΠΆΠΈΡ
Π½Π° ΡΠ΅, ΡΡΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡ Linux-ΡΡΠΈΠ»ΠΈΡΠ°Β top
.
Π’ΡΡ, ΠΏΡΠ°Π²Π΄Π°, Π² Π½Π°ΡΠ΅ΠΌ ΡΠ°ΡΠΏΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π½Π΅ ΡΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π°Π½Π½ΡΡ , ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΊΡΠΈΠΏΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΠΎΠ΄Π½Ρ ΡΡΠ½ΠΊΡΠΈΡ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡΡΡ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠΎ Π² ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ , Π²Π΅ΡΠΎΡΡΠ½Π΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΎΡΡΡΡ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΡΠ½ΠΊΡΠΈΡΡ , ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. Π ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΡΠ½ΠΈΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠΎΠ»Π΅Π΅ Π³Π»ΡΠ±ΠΎΠΊΠΎΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠΈ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ, Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ Π² Π΄Π΅Π»Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ. ΠΠΎ Π΅ΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Π΄ΠΎ Π΄ΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ, ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡΠ±ΠΎΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅.
ΠΠ΅ΡΠ²ΡΠΉ ΠΈΠ· ΡΠ°ΠΊΠΈΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌΒ line_profiler
. ΠΠ½, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ΄ΠΈΡΡ ΠΏΠΎ Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ, ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π²ΡΡΡΠ½Π΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡ
ΠΎΠ΄ΠΈΡ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΊΠΎΠ΄Π°:
# https://github. com/pyutils/line_profiler pip install line_profiler kernprof -l -v some-code.pyΒ # ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π½ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ... Wrote profile results to some-code.py.lprof Timer unit: 1e-06 s Total time: 13.0418 s File: some-code.py Function: exp at line 3 Line #Β Β Β Hits Β Β Β Β TimeΒ Per Hit Β % TimeΒ Line Contents Β Β Β Β Β 3 Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β @profile Β Β Β Β Β 4 Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β def exp(x): Β Β Β Β Β 5 Β Β Β Β 1Β Β Β Β Β 4.0Β Β Β 4.0Β Β Β 0.0Β Β Β getcontext().prec += 2 Β Β Β Β Β 6 Β Β Β Β 1Β Β Β Β Β 0.0Β Β Β 0.0Β Β Β 0.0Β Β Β i, lasts, s, fact, num = 0, 0, 1, 1, 1 Β Β Β Β Β 7Β Β Β 5818 Β Β Β 4017.0Β Β Β 0.7Β Β Β 0.0Β Β Β while s != lasts: Β Β Β Β Β 8Β Β Β 5817 Β Β Β 1569.0Β Β Β 0.3Β Β Β 0.0Β Β Β Β Β lasts = s Β Β Β Β Β 9Β Β Β 5817 Β Β Β 1837.0Β Β Β 0.3Β Β Β 0.0Β Β Β Β Β i += 1 Β Β Β Β 10Β Β Β 5817 Β Β Β 6902.0Β Β Β 1.2Β Β Β 0.1Β Β Β Β Β fact *= i Β Β Β Β 11Β Β Β 5817 Β Β Β 2604.0Β Β Β 0.4Β Β Β 0.0Β Β Β Β Β num *= x Β Β Β Β 12Β Β Β 5817 Β 13024902.0 Β 2239.1 Β Β 99.9Β Β Β Β Β s += num / fact Β Β Β Β 13 Β Β Β Β 1Β Β Β Β Β 5.0Β Β Β 5.0Β Β Β 0.0Β Β Β getcontext().prec -= 2 Β Β Β Β 14 Β Β Β Β 1Β Β Β Β Β 2.0Β Β Β 2.0Β Β Β 0.0Β Β Β return +s
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Β line_profiler
Β ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈΒ kernprof
Β (Π½Π°Π·Π²Π°Π½Π½ΡΠΌ ΡΠ°ΠΊ Π² ΡΠ΅ΡΡΡ Π ΠΎΠ±Π΅ΡΡΠ° ΠΠ΅ΡΠ½Π°), ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΠ΅ΡΡΠΎΠ²ΡΡ
ΠΏΡΠΎΠ³ΠΎΠ½ΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΡΡΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡΒ
-ΡΠ°ΠΉΠ»Π° ΡΠΎ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡΠΌΠΈ ΠΎΠ± Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΊΠΎΠ΄Π°. Π Π½Π°ΡΠ΅ΠΌ ΡΠ°ΡΠΏΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ, ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΎΡΡΡΡ, Π²ΡΠ²ΠΎΠ΄ΠΈΠΌΡΠΉ Π½Π° ΡΠΊΡΠ°Π½ (ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈΒ ΠΎΠΏΡΠΈΠΈ -v
), ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ Π²ΡΡΠ΅. Π’ΡΡ ΡΡΡΠΊΠΎ Π²ΠΈΠ΄Π½Ρ ΠΌΠ΅ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ
ΡΡ
ΠΎΠ΄ΠΈΡ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π² Π΄Π΅Π»Π΅ ΠΏΠΎΠΈΡΠΊΠ° ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ. Π Π²ΡΡ
ΠΎΠ΄Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΒ @profile
, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠΉ ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈΒ exp
. ΠΡΠΎ β Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅ΡΒ line_profiler
Β ΡΠ·Π½Π°ΡΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π² ΡΠ°ΠΉΠ»Π΅ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΠΈΠ·ΡΡΠΈΡΡ.
ΠΠΎ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΏΠΎΡΡΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΠ΅ΡΠ²ΠΎΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π½Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊΠΎΠ΅ Π±ΡΠ²Π°Π΅Ρ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΡ
Β while
Β ΠΈΠ»ΠΈΒ if
Β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡ, ΡΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ ΠΈΠ· ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. Π ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ
ΡΠ»ΡΡΠ°ΡΡ
ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΡΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ, ΡΠ°Π·Π±ΠΈΡΡ ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ ΠΊΠΎΠ΄Π° Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΡΠ΅ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π°Π½Π°Π»ΠΈΠ·Π°.
ΠΡΠ»ΠΈ ΠΆΠ΅ Π²Ρ β ΠΏΠΎ-Π½Π°ΡΡΠΎΡΡΠ΅ΠΌΡ Π»Π΅Π½ΠΈΠ²ΡΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ (ΠΊΠ°ΠΊ Ρ), ΠΈ ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π° Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ β ΡΡΠΎ Π΄Π»Ρ Π²Π°Ρ ΡΠΆΠ΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ β ΡΠΎΠ³Π΄Π° Π²ΠΎΡ Π²Π°ΠΌ Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ βΒ
. ΠΡΠΎ β ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π°Β pprofile
, Π΅ΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡΡΡΠΎΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠ΅, ΡΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ΅ΡΠΏΠ°Π»ΠΈ Π²Π΄ΠΎΡ
Π½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΈΠ· ΠΊΠΎΠ΄Π°Β line_profiler
. ΠΡΠΎΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠ΅ΠΏΠ»ΠΎΠ²ΡΡ ΠΊΠ°ΡΡΡ Π΄Π»Ρ ΡΡΡΠΎΠΊ/ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ ΠΊΠΎΠ΄Π°, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ
Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π΄ΠΎΠ»Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
pip install py-heat pyheat some-code. py --out image_file.pngΠ’Π΅ΠΏΠ»ΠΎΠ²Π°Ρ ΠΊΠ°ΡΡΠ°, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ pyheat
Π£ΡΠΈΡΡΠ²Π°Ρ ΠΏΡΠΎΡΡΠΎΡΡ ΠΊΠΎΠ΄Π° Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΠΎΡΡΡΡ, Π²ΡΠ²ΠΎΠ΄ΠΈΠΌΡΠΉ Π½Π° ΡΠΊΡΠ°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡΒ kernprof
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Π²ΠΈΠ΄Π΅Π»ΠΈ, Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ. ΠΠΎ Π²ΡΡΠ΅ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½Π°Ρ ΡΠ΅ΠΏΠ»ΠΎΠ²Π°Ρ ΠΊΠ°ΡΡΠ° Π΅ΡΡ Π»ΡΡΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΡΠ·ΠΊΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Π½Π°ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠΎ ΡΠΈΡ ΠΏΠΎΡ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ Π»ΠΈΡΡ ΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, ΠΈΠΌΠ΅ΡΡΠ΅ΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΠ΅ΡΡΡΡΠ°ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°. ΠΠΎ ΡΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ CPU, Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ Π²ΠΎΠ»Π½ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. ΠΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π°Ρ ΠΏΠ°ΠΌΡΡΡ β Π΄Π΅ΡΡΠ²ΡΠΉ ΡΠ΅ΡΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ Π·Π°Π΄ΡΠΌΡΠ²Π°ΡΡΡΡ ΠΎ Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ β Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π΅ ΠΈΡΡΠ΅ΡΠΏΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΏΠ°ΠΌΡΡΡ.
ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π΅ ΠΏΠΎΠΏΠ°Π»Π° Π² ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π΅ΠΉ Π½Π΅ Ρ
Π²Π°ΡΠ°Π΅Ρ ΠΏΠ°ΠΌΡΡΠΈ, Π²ΡΡ ΡΠ°Π²Π½ΠΎ, ΡΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠ°ΠΌΡΡΡΡ, ΡΡΠΎΠΈΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ. Π‘Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Ρ ΠΏΡΠΈΡΠ΅Π»ΠΎΠΌ Π½Π° ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π΄Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΡΠ°Π΄ΠΈ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠ»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌΒ memory_profiler
. ΠΠ½ ΠΏΠΎΡ
ΠΎΠΆ Π½Π° ΡΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ Π²Π°ΠΌΒ line_profiler
:
# https://github.com/pythonprofilers/memory_profiler pip install memory_profiler psutil psutil is needed for better memory_profiler performance python -m memory_profiler some-code.py Filename: some-code.py Line #Β Β Mem usageΒ Β IncrementΒ Occurrences Β Line Contents Β Β Β Β 15 Β 39.113 MiB Β 39.113 MiBΒ Β Β Β Β Β 1 Β @profile Β Β Β Β 16Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β def memory_intensive(): Β Β Β Β 17 Β 46.539 MiBΒ Β 7.426 MiBΒ Β Β Β Β Β 1 Β Β Β small_list = [None] * 1000000 Β Β Β Β 18Β 122.852 MiB Β 76.312 MiBΒ Β Β Β Β Β 1 Β Β Β big_list = [None] * 10000000 Β Β Β Β 19 Β 46.766 MiBΒ -76.086 MiBΒ Β Β Β Β Β 1 Β Β Β del big_list Β Β Β Β 20 Β 46.766 MiBΒ Β 0.000 MiBΒ Β Β Β Β Β 1 Β Β Β return small_list
ΠΡΠΎ ΠΈΡΠΏΡΡΠ°Π½ΠΈΠ΅ ΠΌΡ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠΌ Π½Π° Π΄ΡΡΠ³ΠΎΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ΄Π°.
Π€ΡΠ½ΠΊΡΠΈΡΒ memory_intensive
Β ΡΠΎΠ·Π΄Π°ΡΡ ΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅Ρ Π±ΠΎΠ»ΡΡΠΈΠ΅ Python-ΡΠΏΠΈΡΠΊΠΈ. ΠΠ° Π΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π½Ρ ΠΎΡΠ΅Π½ΠΈΡΡ ΡΡ ΠΏΠΎΠ»ΡΠ·Ρ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½Π΅ΡΡΠΈ Π½Π°ΠΌΒ memory_profiler
Β Π² Π΄Π΅Π»Π΅ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ. Π’Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΏΡΠΈΒ kernprof
-ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, ΡΡΠ½ΠΊΡΠΈΡ Π½Π°Π΄ΠΎ ΠΎΡΠ½Π°ΡΡΠΈΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠΌΒ @profile
. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΒ memory_profiler
Β ΡΠ·Π½Π°ΡΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠΎΠ΄ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ.
Π’ΡΡ Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π΄Π»Ρ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΒ None
, Π±ΡΠ»ΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ 100 ΠΠΈΠ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ½Π°Π»ΠΈΠ·ΠΈΡΡΡ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅, ΠΏΡΠ°Π²Π΄Π°, Π½Π°Π΄ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠΎ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΎΡΡΠ°ΠΆΠ°ΡΡ Π½Π΅ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ, Π° ΡΠΎ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΠΌΡΡΠΈ Π±ΡΠ»ΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΎ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΡΡΡΠΎΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, Ρ
ΡΠ°Π½ΡΡΠΈΠ΅ ΡΠΏΠΈΡΠΊΠΈ, Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΡΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ΄Π΅ΡΡ ΠΎΡΡΠ°ΠΆΡΠ½ Π»ΠΈΡΡ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ Python-ΠΎΠ±ΡΠ΅ΠΊΡΡΒ list
, Π²Π΅ΡΠΎΡΡΠ½Π΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π²ΡΠ΄Π΅Π»ΡΡΡ ΠΏΠ°ΠΌΡΡΡ Ρ Π·Π°ΠΏΠ°ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΡΡΡΠΎΠΈΡΡΡΡ ΠΏΠΎΠ΄ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠΎΡΡ ΠΎΠ±ΡΡΠΌΠ° Π΄Π°Π½Π½ΡΡ
, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΏΠ°ΡΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ.
ΠΠ°ΠΊ ΠΌΡ ΡΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, Python-ΡΠΏΠΈΡΠΊΠΈ ΡΠ°ΡΡΠΎ ΠΏΠΎΡΡΠ΅Π±Π»ΡΡΡ ΡΠΎΡΠ½ΠΈ ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π³ΠΈΠ³Π°Π±Π°ΠΉΡΡ ΠΏΠ°ΠΌΡΡΠΈ. ΠΡΡΡΡΠΎ ΡΠ»ΡΡΡΠΈΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡΠΈΠ±Π΅Π³Π½ΡΠ² ΠΊ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π΅ Π½Π° ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡΒ array
. ΠΠ½ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅ Ρ
ΡΠ°Π½ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΡ
ΡΠΈΠΏΠΎΠ², Π²ΡΠΎΠ΄Π΅Β int
Β ΠΈΠ»ΠΈΒ float
. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ, Π²ΡΠ±ΠΈΡΠ°Ρ ΡΠΈΠΏΡ Ρ ΠΌΠ΅Π½ΡΡΠ΅ΠΉ ΡΠΎΡΠ½ΠΎΡΡΡΡ, ΠΏΡΠΈΠΌΠ΅Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΒ typecode
. ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ help(array)
ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ°Π±Π»ΠΈΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΈ ΠΈΡ
ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΡΠ»ΠΈ ΠΆΠ΅ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, Π΄Π°ΡΡΠΈΠ΅ ΡΠΎΡΠ½ΡΡ ΠΈ Π΄Π΅ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π½Π°ΠΉΡΠΈ ΡΠ·ΠΊΠΈΠ΅ ΠΌΠ΅ΡΡΠ° ΠΊΠΎΠ΄Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ ΠΈ Π²ΡΠΉΡΠΈ Π½Π° ΡΠ΅Π°Π»ΡΠ½ΡΠΉ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ Python. Π Π΅ΡΠ»ΠΈ ΠΈ Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ΅ΡΠΈΡΡ ΠΈΠΌΠ΅ΡΡΡΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ β ΡΠΎΠ³Π΄Π° ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π²ΡΡΡΠ½Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² Π½Π΅Π΄ΡΠ°Ρ Python ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ Π½Π΅ΠΊΠΎΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎΠΎΡΡΠΆΠΈΠ²ΡΠΈΡΡ Π·Π½Π°Π½ΠΈΡΠΌΠΈ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΌΠΈ Π² Ρ ΠΎΠ΄Π΅ ΡΠ°ΠΊΠΈΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ, Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΈΡΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄.
ΠΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌΒ dis
, ΠΏΠ΅ΡΠ΅Π΄Π°Π² ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΡΒ dis. dis(...)
. ΠΠ½ ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΈ Π²ΡΠ²Π΅Π΄Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π°, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
from math import e def exp(x): Β Β Β Β return e**xΒ # math.exp(x) import dis dis.dis(exp)
Π ΡΡΠΎΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π΅ ΠΌΡ Π²ΡΡ Π²ΡΠ΅ΠΌΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π»ΠΈ ΠΎΡΠ΅Π½Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΡΒ e
Β Π² ΡΡΠ΅ΠΏΠ΅Π½ΡΒ X
. ΠΡΡΠ΅ ΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΅ΡΠ°Π΅Ρ ΡΡΡ Π·Π°Π΄Π°ΡΡ Ρ Π²ΡΡΠΎΠΊΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΡΡ. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠ°Π²Π½ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±ΡΡΡΡΠΎΠΉ ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΉ. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΈΡ
Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΊΠ°ΠΆΡΡΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ. ΠΡ
ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π΅Π»Π°Π΅Ρ Π΅ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ ΠΎΠ΄Π½Π° ΡΡΠ½ΠΊΡΠΈΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ Π΄ΡΡΠ³ΠΎΠΉ.
ΠΠΎΡ ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π±ΡΡΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ:
2 0 LOAD_GLOBAL 0 (e) 2 LOAD_FAST 0 (x) 4 BINARY_POWER 6 RETURN_VALUE
Π Π²ΠΎΡ β Π½Π°ΡΠ° ΡΡΠ°ΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ:
4 0 LOAD_GLOBAL 0 (getcontext) 2 CALL_FUNCTION 0 4 DUP_TOP 6 LOAD_ATTR 1 (prec) 8 LOAD_CONST 1 (2) 10 INPLACE_ADD 12 ROT_TWO 14 STORE_ATTR 1 (prec) 5 16 LOAD_CONST 2 ((0, 0, 1, 1, 1)) 18 UNPACK_SEQUENCE 5 20 STORE_FAST 1 (i) 22 STORE_FAST 2 (lasts) 24 STORE_FAST 3 (s) 26 STORE_FAST 4 (fact) 28 STORE_FAST 5 (num) 6 >> 30 LOAD_FAST 3 (s) 32 LOAD_FAST 2 (lasts) 34 COMPARE_OP 3 (!=) 36 POP_JUMP_IF_FALSE 80 . .. 100 RETURN_VALUE
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π»ΡΡΡΠ΅ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ β ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π²Π·Π³Π»ΡΠ½ΡΡΡ Π½Π°Β ΡΡΠΎΡΒ ΠΎΡΠ²Π΅Ρ ΡΠΎ StackOverflow, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ°ΡΠΊΡΡΠ²Π°Π΅ΡΡΡ ΡΠΌΡΡΠ» ΡΡΠΎΠ»Π±ΡΠΎΠ², ΠΏΠΎ ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅.
ΠΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΊ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ
Π’ΠΎΡ, ΠΊΡΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ Π΄ΠΎΠ²Π΅Π΄ΡΡ Π΅Ρ Π΄ΠΎ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄Π΅ ΠΈΠ»ΠΈ Π² Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°Ρ Π½Π°ΡΠ½ΡΡ Π΄Π°Π²Π°ΡΡ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ. Π ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΡΠΏΠΎΡΠΎΠ±Π½ΡΠ΅ Π΄Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΡΠΎΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΠ΅ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ»ΡΡΡΠΈΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π΅Π³ΠΎ Π² Π²ΠΈΠ΄Π΅ C-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ β PyPy ΠΈΠ»ΠΈ Cython. ΠΠ΅ΡΠ²ΡΠΉ ΠΈΠ· Π½ΠΈΡ β ΡΡΠΎ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΡ Π·Π°ΠΌΠ΅Π½Ρ CPython. ΠΠ½ ΠΌΠΎΠΆΠ΅Ρ Π΄Π°ΡΡ, Π½Π΅ ΡΡΠ΅Π±ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΡΠΈΠ»ΠΈΠΉ ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°, Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠΎΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ΄Π°. ΠΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ Π΄ΠΎΡΡΠΎΠΉΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΊΠΎΠ΅ΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ PyPy β Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π°ΡΡ ΠΈΠ², ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ PyPy ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄:
# ΠΠ°Π³ΡΡΠ·ΠΈΡΡ Π°ΡΡ ΠΈΠ² ΠΌΠΎΠΆΠ½ΠΎ Ρ https://www.pypy.org/download.html tar -xjf pypy3.8-v7.3.7-linux64.tar.bz2 cd pypy3.8-v7.3.7-linux64/bin ./pypy some-code.py
ΠΡΠΎΡΡΠΎ ΡΡΠΎΠ±Ρ Π΄ΠΎΠΊΠ°Π·Π°ΡΡ ΡΠΎ, ΡΡΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ PyPy ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΠΎΡΠΎΠ±ΡΡ ΡΡΠΈΠ»ΠΈΠΉ, ΡΡΠ°Π·Ρ ΠΆΠ΅ ΡΠ»ΡΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΡΡΡΠΎΠΈΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΈΡΠΏΡΡΠ°Π½ΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΠ°, Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ CPython ΠΈ PyPy:
time python some-code.py real 0m2,861s user 0m2,841s sys Β Β 0m0,016s time pypy some-code.py real 0m1,450s user 0m1,422s sys Β Β 0m0,009s
PyPy, ΠΏΠΎΠΌΠΈΠΌΠΎ Π²ΡΡΠ΅ΠΎΠ·Π½Π°ΡΠ΅Π½Π½ΡΡ ΠΏΠ»ΡΡΠΎΠ², ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ Π΅ΡΡ ΠΈ ΡΠ΅ΠΌ, ΡΡΠΎ Π΄Π»Ρ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π²Π½ΠΎΡΠΈΡΡ Π² ΠΊΠΎΠ΄ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΠ½, ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Python.
ΠΡΡ ΡΡΠΎ Π·Π²ΡΡΠΈΡ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ PyPy ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΈΠ΄ΡΠΈ Π½Π° ΠΊΠΎΠ΅-ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡΡ. ΠΡΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΠ΅ΠΊΡΡ, Π½ΡΠΆΠ΄Π°ΡΡΠΈΠ΅ΡΡ Π² C-ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ°Ρ
, ΡΠ°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊΒ numpy
, Π½ΠΎ ΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΡ, ΡΡΠΎ ΡΠΈΠ»ΡΠ½ΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΡΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠ²ΠΎΠ΄Ρ Π½Π° Π½Π΅Ρ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. PyPy, ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π½Π΅ ΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ Π² ΡΠΈΡΡΠ°ΡΠΈΡΡ
, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΈΠ»ΠΈ Π² ΡΠ»ΡΡΠ°ΡΡ
, ΠΊΠΎΠ³Π΄Π° ΡΠ΅ΡΡ ΠΈΠ΄ΡΡ ΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ
. Π, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ ΡΠ΅ΡΡ ΠΈΠ΄ΡΡ ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ
, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠΎΡΠΎΡΡΡ
ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π° ΠΊ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ΅ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°, Π½Π΅ ΡΡΠΎΠΈΡ ΠΎΠΆΠΈΠ΄Π°ΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π²ΡΠ³ΠΎΠ΄Ρ ΠΎΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ PyPy.
ΠΡΠ»ΠΈ PyPy Π²Π°ΠΌ Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ β ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Cythoh. ΠΡΠΎ β ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ C-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠΈΠΏΠΎΠ² (Π½Π΅ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ ΠΏΠΎ ΡΠΈΠΏΠ°ΠΌ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ Π² Python) Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Python. Cython, ΠΊΡΠΎΠΌΠ΅ ΠΏΡΠΎΡΠ΅Π³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ AOT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π΄Π°ΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΡΠΎΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡ ΠΎΠ΄Ρ ΠΎΡ Ρ ΠΎΠ»ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Cython ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΡΠΎΠ±ΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΏΡΠΎΡΠΈΠ² ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° Python-ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΠΈΠΉΡΡ ΠΎΡ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ, ΡΠΎΠ³Π΄Π° Π²Π°ΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²Π·Π³Π»ΡΠ½ΡΡΡ Π½Π°Β prometeoΒ β Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΉ ΡΠ·ΡΠΊ, ΠΎΡΡΠ°ΠΆΠ°ΡΡΠΈΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° Python. ΠΠ½, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ Π½Π° Π½Π°ΡΡΠ½ΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π½Π°Β prometeo
, ΡΡΠ°Π½ΡΠΏΠΈΠ»ΠΈΡΡΡΡΡΡ Π² ΡΠΈΡΡΡΠΉ C-ΠΊΠΎΠ΄. ΠΡ
ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΡΠ°Π²Π½ΠΈΠΌΠ° ΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ
Π½Π° C.
ΠΡΠ»ΠΈ ΠΆΠ΅ Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ
ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΠΌ Π²ΡΠΉΡΠΈ Π½Π° Π½ΡΠΆΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΡΠΎΠ³Π΄Π° Π²Π°ΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎΠΈΡ ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π° C ΠΈΠ»ΠΈ Fortran, Π° Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΠ· Python ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ EFI. Π‘ΡΠ΅Π΄ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Π½Ρ Π²Π°ΠΌ Π² ΡΡΠΎΠΌ ΠΏΠΎΠΌΠΎΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡΒ ctypes
Β ΠΈΒ cffi
Β Π΄Π»Ρ ΡΠ·ΡΠΊΠ° C, ΠΈΒ f2py
Β Π΄Π»Ρ Fortran.
ΠΡΠΎΠ³ΠΈ
ΠΠ΅ΡΠ²ΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ. ΠΡΠ»ΠΈ ΠΆΠ΅ Π²Π°ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ β ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΡΠΎ, ΡΡΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π°, ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ β ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΠΌ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΡΡΠΎΠΉ ΡΡΠ°ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°Π»ΠΎΠ·Π½Π°ΡΠΈΠΌΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΡΡ, Π·Π°Π½ΠΈΠΌΠ°ΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΡΠ»ΡΡΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠ΄Π°. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΎΡΠ΅Π½ΠΈΡΡ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
ΠΡΠ° ΡΡΠ°ΡΡΡ Π½Π°ΡΠ΅Π»Π΅Π½Π° Π½Π° ΡΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΌΠΎΡΡ Π²ΡΠ΅ΠΌ ΠΆΠ΅Π»Π°ΡΡΠΈΠΌ Π² ΠΏΠΎΠΈΡΠΊΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ. ΠΠΎ Π²ΠΎΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ β ΡΡΠΎ ΡΠΆΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌ Π΄ΡΡΠ³Π°Ρ ΠΈΡΡΠΎΡΠΈΡ. ΠΠΎΠ΅-ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ΄Π΅ΠΈ Π½Π° ΡΡΡ ΡΠ΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π²Β ΠΎΠ΄Π½ΠΎΠΉΒ ΠΈΠ· ΠΌΠΎΠΈΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΡΡΠ°ΡΠ΅ΠΉ, ΠΏΠΎΡΠ²ΡΡΡΠ½Π½ΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ Python-ΠΊΠΎΠ΄Π°.
Π, Π° ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΠ΅ ΠΊ Π½Π°ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ? πΠΡ Π²Β wunderfund.ioΒ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡΡΒ Π²ΡΡΠΎΠΊΠΎΡΠ°ΡΡΠΎΡΠ½ΠΎΠΉ Π°Π»Π³ΠΎΡΠΎΡΠ³ΠΎΠ²Π»Π΅ΠΉΒ Ρ 2014 Π³ΠΎΠ΄Π°. ΠΡΡΠΎΠΊΠΎΡΠ°ΡΡΠΎΡΠ½Π°Ρ ΡΠΎΡΠ³ΠΎΠ²Π»Ρ β ΡΡΠΎ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠ΅ ΡΠΎΡΠ΅Π²Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΡΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² ΠΈ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΎΠ² Π²ΡΠ΅Π³ΠΎ ΠΌΠΈΡΠ°. ΠΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠ²ΡΠΈΡΡ ΠΊ Π½Π°ΠΌ, Π²Ρ ΡΡΠ°Π½Π΅ΡΠ΅ ΡΠ°ΡΡΡΡ ΡΡΠΎΠΉ ΡΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡ Π²Π°ΡΠΊΠΈ.
ΠΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΠΈ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΏΠΎ Π°Π½Π°Π»ΠΈΠ·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ low latency ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π΄Π»Ρ ΡΠ²Π»Π΅ΡΠ΅Π½Π½ΡΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ². ΠΠΈΠ±ΠΊΠΈΠΉ Π³ΡΠ°ΡΠΈΠΊ ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π±ΡΡΠΎΠΊΡΠ°ΡΠΈΠΈ, ΡΠ΅ΡΠ΅Π½ΠΈΡ Π±ΡΡΡΡΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ ΠΈ Π²ΠΎΠΏΠ»ΠΎΡΠ°ΡΡΡΡ Π² ΠΆΠΈΠ·Π½Ρ.
Π‘Π΅ΠΉΡΠ°Ρ ΠΌΡ ΠΈΡΠ΅ΠΌ ΠΏΠ»ΡΡΠΎΠ²ΠΈΠΊΠΎΠ², ΠΏΠΈΡΠΎΠ½ΠΈΡΡΠΎΠ², Π΄Π°ΡΠ°-ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΎΠ² ΠΈ ΠΌΠ»-ΡΠΈΡΠ΅ΡΡΠ΅ΡΠΎΠ².
ΠΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡΠ΅ΡΡ ΠΊ Π½Π°ΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅.
ΠΠ°ΠΊ ΡΡΠΊΠΎΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Python
ΠΠ° Python ΠΏΠΈΡΡΡ ΠΊΠ°ΠΊ Π΄Π΅ΡΠΊΡΠΎΠΏΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ°ΠΊ ΠΈ Π²ΡΡΠΎΠΊΠΎΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ½ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ½ΡΡΠΎΡΠΏΠ΅ΠΊΡΠΈΡ ΠΈ ΠΌΠ΅ΡΠ°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
ΠΠΎ Python Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½ΠΈΡ β ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΌΠΈ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (C++ ΠΈ Π΄Ρ).
ΠΠ½Π΄ΡΠ΅ΠΉ Π‘ΠΌΠΈΡΠ½ΠΎΠ²
Python-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ, ΠΏΡΠ΅ΠΏΠΎΠ΄Π°Π²Π°ΡΠ΅Π»Ρ ΠΏΠΎ ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΠΎΠΉ Π³ΡΠ°ΠΌΠΎΡΠ½ΠΎΡΡΠΈ Π² ΠΠΎΡΠΊΠΎΠ²ΡΠΊΠΎΠΉ ΡΠΊΠΎΠ»Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² (ΠΠ¨Π)
Π ΡΡΠ°ΡΡΠ΅ Ρ ΡΠ°Π·Π±Π΅ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ΅ΠΉΡ, ΡΡΠΎΠ±ΡΒ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΡΡΠΊΠΎΡΠΈΡΡ ΠΈΠΌΠ΅ΡΡΠΈΠΉΡΡ ΠΊΠΎΠ΄ Π½Π° Python.
ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ (Π΄Π΅ΠΌΠΎ-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅)
Π‘ΡΠ°Π·Ρ ΠΆΠ΅ ΡΠΊΠ°ΠΆΡ, ΡΡΠΎ ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎΠ³ΡΡΠΆΠ°ΡΡΡΡ Π² ΠΏΡΡΠΈΠ½Ρ Ρ Π°ΡΠ΄ΠΊΠΎΡΠ½ΠΎΠΉ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΈ ΠΏΡΠΎΠ΄ΠΈΡΠ°ΡΡΡΡ ΡΠΊΠ²ΠΎΠ·Ρ Π΄Π΅ΡΡΡΠΎΠΊ ΡΡΠΎΠ²Π½Π΅ΠΉ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΡΡΠ΅ΠΊΠ΅ ΠΈ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ. ΠΡΠΈΡΠΈΠ½Π° ΠΏΡΠΎΡΡΠ°: Π²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΏΠΎΠΊΠ°ΠΆΡ ΡΠ΅Π³ΠΎΠ΄Π½Ρ, ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΡΡ Π½Π° ΠΏΡΠΎΡΡΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠΈΡΠ°ΠΆΠΈΡΡΡΡΡΡ Π½Π° Π»ΡΠ±ΡΠ΅ ΠΌΠ°ΡΡΡΠ°Π±Π½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ.
Π Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ°ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΌΡ Π²ΠΎΠ·ΡΠΌΡΠΌ Π·Π°Π΄Π°ΡΡ: ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΌΠ°Π³Π°Π·ΠΈΠ½, ΠΏΡΠΎΠ΄Π°ΡΡΠΈΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠΎΠ²Π°ΡΡ. Π’ΠΎΠ²Π°Ρ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΠ·ΡΠ΅ΡΡΡ ΡΡΠ΅ΠΌΡ Π²Π΅Π»ΠΈΡΠΈΠ½Π°ΠΌΠΈ: Π½Π°Π·Π²Π°Π½ΠΈΠ΅, ΡΠ΅Π½Π°, Π²Π°Π»ΡΡΠ°. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΡΠΎΠ²Π°ΡΠΎΠ², Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ Π΅Π³ΠΎ Π½Π΅ΠΊΠΈΠΌΠΈ ΡΠΎΠ²Π°ΡΠ°ΠΌΠΈ.
ΠΠ° ΡΠ·ΡΠΊΠ΅ Python ΡΠ°ΠΊΠ°Ρ Π·Π°Π΄Π°ΡΠ° ΡΠ΅ΡΠ°Π΅ΡΡΡ Π±ΡΡΡΡΠΎ:
Π‘ΡΠ°Π·Ρ ΠΎΡΠΌΠ΅ΡΡ, ΡΡΠΎ Ρ Π²Π·ΡΠ» Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΏΠΈΡΠΊΠ° Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ»Π°ΡΡ ΡΠ°ΠΊΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π½Π΅ ΠΈΡΠΊΠ°ΡΡ Π΄Π΅Π»ΡΡΡ Π² ΡΡΡΡΡΠ½ΡΡ Π΄ΠΎΠ»ΡΡ ΡΠ΅ΠΊΡΠ½Π΄Ρ.
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠ°Π·Π°Π»ΠΎΡΡ Π±Ρ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄, Π½ΠΎ ΠΊΠ°ΠΊ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΌΠ΅Π½ΡΡΡ? ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ±ΡΠ°ΡΡ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠ΅, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΡΠΎΡΠΎ ΠΎΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
ΠΡΠΎΡΠ΅ΡΡ ΡΠ±ΠΎΡΠ° ΡΡΠΈΡ ΠΌΠ΅ΡΡΠΈΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ°ΠΊ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ°Π±ΠΎΡΡ, ΡΠ°ΠΊ ΠΈ ΠΏΠΎ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
Π‘Π½Π°ΡΠ°Π»Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² Π½Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠΎΡΠΎΡΡΠΈ Π΅Ρ ΡΠ°Π±ΠΎΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² Python Π΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ time, Π½Π°Ρ ΠΎΠ΄ΡΡΠ°ΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅. ΠΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠ°: ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π² Π½Π°ΡΠ°Π»Π΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅. ΠΠ°Π»Π΅Π΅ ΡΡΠΈΡΠ°Π΅ΠΌ Π΄Π΅Π»ΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ²Π»ΡΡΡΡΡ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π Π΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ½ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΎ ΡΡΠΎΡ ΠΊΠΎΠ΄:
- Π Ρ ΠΎΠ΄Π΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅Ρ ΡΠΌΡΡΠ»Π° ΠΈΠ·ΠΌΠ΅ΡΡΡΡ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΠ΄Π°, ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π·Π° Π²Π²ΠΎΠ΄ Π΄Π°Π½Π½ΡΡ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΠ°ΠΉΠ»Π°, ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΈ Ρ.Π΄. ΠΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π°ΠΏΡΠΈΠΎΡΠΈ Π±ΡΠ΄ΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΌΠΈ ΠΈΠ·-Π·Π° Π½ΠΈΠ·ΠΊΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΡΡ Π² ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ Π² ΠΠΠ£ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°. ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅, ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π½ΠΈΠ·ΠΊΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΊΡΠΎΠ΅ΡΡΡ Π² ΠΊΠΎΠ΄Π΅ Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½ΡΡ , ΡΠΎΠ³Π΄Π° Π΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
- ΠΠ΄Π½Π° ΠΈ ΡΠ° ΠΆΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Π·Π°ΠΏΡΡΠ΅Π½Π½Π°Ρ Π΄Π²Π° ΡΠ°Π·Π°, ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²ΡΠ΄Π°ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ½ΠΎΠ²ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ. Π ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ Π»ΠΈΡΠ½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΡΡΠΎΠ±Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ Π²Π»ΠΈΡΠ½ΠΈΠ΅, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΈ ΠΏΠΎΡΡΠΈΡΠ°ΡΡ ΡΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (ΡΡΠΎ ΠΈ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π² ΠΊΠΎΠ΄Π΅).
ΠΡΠΎΡ ΠΊΠΎΠ΄ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π» ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠΌΠΈΠ½Π³ΠΈ:
Π‘ΡΠ°Π·Ρ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄ΠΎΡ ΠΎΠ΄ΠΈΡ Π΄ΠΎ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΠ°ΠΏΡΡΠΊΠ°Π» ΠΊΠΎΠ΄ Ρ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ:
- Intel Core i7-7700HQ
- 16Gb RAM
- KUbuntu 22.04
ΠΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΡΡΠ°Π·Ρ ΠΆΠ΅ ΠΏΠ΅ΡΠ²Π°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ βΡΠΎΡΠΌΠΎΠ·ΠΈΡβ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΡΠ½ΠΈ ΠΈ ΡΡΡΡΡΠΈ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π° ΠΈ ΡΠ°ΠΌΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΡΠΎΡΡΠΎΠΈΡ ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π·Π°ΠΌΠ΅Ρ ΡΠ°ΠΉΠΌΠΈΠ½Π³ΠΎΠ² Π² ΡΠΎΠΌ Π²ΠΈΠ΄Π΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Ρ Π½Π°ΠΏΠΈΡΠ°Π» Π²ΡΡΠ΅, Π±ΡΠ΄Π΅Ρ ΠΊΡΠ°ΠΉΠ½Π΅ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ.
ΠΠΎ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ΅ΡΠ°Π΅ΠΌΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ Π² Python ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ Π΄Π»Ρ ΡΠ°ΠΊΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ β ΡΡΠΈΠ»ΠΈΡΡ cProfile. ΠΠ½Π° ΡΠΏΠΎΡΠΎΠ±Π½Π° Π½Π΅ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠΎΠ΄ ΠΈ ΡΠ°ΡΡΡΠΈΡΠ°ΡΡ Π²ΡΠ΅ΠΌΡ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ, Π½ΠΎ ΠΈ ΡΠ°ΡΡΡΠΈΡΠ°ΡΡ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° (Π²ΠΊΠ»ΡΡΠ°Ρ Π΄Π°ΠΆΠ΅ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠ², Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ Ρ. Π΄.).
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ cProfile, Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΌΠ΅Π½ΡΡΡ ΠΊΠΎΠ΄. ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ:
python3 -m cProfile main.py
Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ ΠΈ ΠΏΠΎΡΠ»Π΅ Π½Π΅Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅Π½Π° Π΄Π΅ΡΠ°Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ:
Π‘ΡΠ°Π·Ρ ΠΆΠ΅ Π΅ΡΡΡ Π΄Π²Π΅ ΠΌΡΡΠ»ΠΈ:
- ΠΠ°Π»ΠΈΡΠΈΠ΅ Π»ΡΠ±ΠΎΠ³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° Π·Π°ΠΌΠ΅Π΄Π»ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π»ΡΠ±ΠΎΠΉ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΠ²ΠΎΠΉ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΈ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ»ΠΎΡΡ Ρ 2.46 Π΄ΠΎ 3.26 ΡΠ΅ΠΊΡΠ½Π΄.
- Π‘ΡΠ°Π·Ρ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΠ°Π· Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ list.append, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΡΠΏΠΈΡΠΎΠΊ. Π ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ΄Π΅Ρ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ: Π΅ΡΠ»ΠΈ ΠΌΡ Π·Π°ΡΠ°Π½Π΅Π΅ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΈ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°, ΡΡΠΎ ΠΌΠ΅ΡΠ°Π΅Ρ Π½Π°ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ Π·Π°ΡΠ°Π½Π΅Π΅ ΡΠΏΠΈΡΠΎΠΊ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°?
ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ΄ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΡΡ ΡΡΠ°Π·Ρ:
ΠΠ°ΠΏΡΡΡΠΈΠΌ Π΅Π³ΠΎ ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ cProfile. Π ΡΡΠΎ ΠΆΠ΅ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ?
Π‘ΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠΌΠ΅Π½ΡΡΠΈΠ»ΠΎΡΡ Π΄ΠΎ 2.06 ΡΠ΅ΠΊΡΠ½Π΄, ΠΈ ΡΡΠΎ ΡΠΎ Π²ΠΊΠ»ΡΡΡΠ½Π½ΡΠΌ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠΌ. Π Π±Π΅Π· Π½Π΅Π³ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊ Π²ΠΎΠΎΠ±ΡΠ΅ 1.66! Π Π²ΡΡ ΠΏΡΡΡΠΌ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ.
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠ°ΠΌΡΡΠΈ
Π’Π°ΠΊΠΆΠ΅ ΡΡΠ°Π·Ρ ΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² Π½Π°Ρ ΠΊΠΎΠ΄ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΡΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΡΠ·Π½Π°ΡΡ βΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΆΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π² ΠΏΠ°ΠΌΡΡΠΈ ΡΡΠΈ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΡΠΎΠ²Π°ΡΠΎΠ²β. ΠΠ»Ρ ΠΏΠΎΠ΄ΡΡΡΡΠ° ΠΏΠ°ΠΌΡΡΠΈ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ pympler.
Π ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π² ΡΡΠΈ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΡΠΎΠ²Π°ΡΠΎΠ² ΠΏΠΎΠΊΠ°Π·Π°Π» ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ:
Π Π°Π·ΠΌΠ΅Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°: 176000864 Π±Π°ΠΉΡ ΠΈΠ»ΠΈ 167.85 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Ρ ΡΠ±ΡΠ°Π» ΠΈΠ· ΠΊΠΎΠ΄Π° ΠΏΠΎΠ΄ΡΡΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠΈΡΠΈΠ½Π° ΠΏΡΠΎΡΡΠ°: pympler Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΡΡΠ° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΈΠΌΠ΅ΡΡΠΈΠΌΡΡ ΡΡΡΡΠΊΡΡΡΠ°ΠΌ Π΄Π°Π½Π½ΡΡ , ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΠ΄ΡΡΡΡΠ° ΡΠΊΠΎΡΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°Π· Π² ΠΏΡΡΡ, Π΄Π΅Π»Π°Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π΅ΠΎΠΏΡΠ°Π²Π΄Π°Π½Π½ΡΠΌ.
Π ΡΠ΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π·Π½Π°Π΅ΠΌ ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΈ Π² ΠΏΠ°ΠΌΡΡΠΈ) β ΠΏΡΠΈΡΡΡΠΏΠΈΠΌ ΠΊ Π΅Π³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ.
Π‘ΠΏΠΎΡΠΎΠ±Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ
ΠΠ°ΡΠ½ΡΠΌ ΠΌΡ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ β Π·Π°Π»Π΅Π·Π΅ΠΌ Π²Π½ΡΡΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΎΠ²Π°ΡΠ° ΠΈ ΠΎΡΠ½ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΠΌ ΠΏΠΎΠΊΠΎΠΏΠ°Π΅ΠΌΡΡ.
Π‘Π΅ΠΉΡΠ°Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡΠΊΠ½ΠΎΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ΄ΡΠΌΠ°Π΅ΠΌ, Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π·Π΄Π΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊΡΡ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΈΠ½ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠ»Π°ΡΡΠ°, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»? Π ΡΠ°ΠΊΠ°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π΅ΡΡΡ, ΠΎΠ½Π° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π΄Π°ΡΠ°ΠΊΠ»Π°ΡΡ. ΠΡΠ°Π²Π΄Π°, ΡΡΠ°Π·Ρ ΡΡΠΎΠΈΡ ΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡΡΡ, ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠΉ Π΄Π°ΡΠ°ΠΊΠ»Π°ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ Π½Π°Π΄ΡΡΡΠΎΠΉΠΊΠΎΠΉ Π½Π°Π΄ ΠΎΠ±ΡΡΠ½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ·ΡΠΊΠ° ΡΡΡΠΊΠΎ ΡΠΊΠ°Π·Π°Π»ΠΈ, ΠΊΠ°ΠΊΠΈΠ΅ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ»Ρ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ . Π Π½Π°ΠΌ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ Π΄Π°ΡΠ°ΠΊΠ»Π°ΡΡ Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠΌΠΈ, Π² ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ.
ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ? ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈ ΡΠ΄Π°Π»ΡΡΡ ΠΏΠΎΠ»Ρ Π² ΡΠ°Π½ΡΠ°ΠΉΠΌΠ΅, Π² ΠΊΠ»Π°ΡΡΠ°Ρ ΠΏΠΈΡΠΎΠ½Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΡΡΡΠΊΡΡΡΠ° ΡΠ»ΠΎΠ²Π°ΡΡ __dict__. Π ΡΡΠΎ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΠΎΠΌ.
ΠΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠΊΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ (Π° ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΡ ΠΎΠ±ΡΡΠΌΠΎΠ² Π΄Π°Π½Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΊΠ°ΠΊ ΡΠ°Π· ΠΆΡΡΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ), ΡΠΎ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ±ΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ, ΠΈ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±ΡΡΡΡΠ΅Π΅.
Π Π΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ ΡΡΡ ΠΈΠ΄Π΅Ρ (Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΊΠΎΡΡΠ΅ΠΆ __slots__).
ΠΡΠ»ΠΈ ΡΡΠΎΡ ΠΊΠΎΠ΄ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΡΠΎ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ Π½Π° 25 ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ²
Π Π΅ΡΠ»ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ __slots__ ΡΠΊΠ°Π·Π°ΡΡ Π² ΠΊΠΎΠ΄Π΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΏΠΎ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡΡ Π΅ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ½ΠΎΠ³ΡΡΠΈΠ±Π°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ:
Π Π°Π·ΠΌΠ΅Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°: 80000504 Π±Π°ΠΉΡ ΠΈΠ»ΠΈ 76.29 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ
Π’ΠΎ Π΅ΡΡΡ, ΠΏΡΡΡΠΌ ΠΎΡΠΊΠ°Π·Π° ΠΎΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΡ ΡΡΠ°Π·Ρ ΡΠΌΠ΅Π½ΡΡΠΈΠ»ΠΈ ΡΠ°ΡΡ ΠΎΠ΄Ρ ΠΏΠ°ΠΌΡΡΠΈ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²Π΄Π²ΠΎΠ΅!
Π Π½Π° ΡΡΠΎΠΌ ΠΌΡ Π½Π΅ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠΌΡΡ.
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°
Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ Π½Π°ΠΌ Π² Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ Π½Π°ΡΠ΅ΠΉ ΡΠ΅Π»ΠΈ β Π·Π°ΠΌΠ΅Π½Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Python Π½Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ PyPy.
Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΠ· ΠΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ, PyPy β ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΡΠ·ΡΠΊΠ° Python, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° ΡΠ·ΡΠΊΠ΅ Python. ΠΠ΄Π½Π°ΠΊΠΎ Π² Π½Π΅Π³ΠΎ Π²ΡΡΡΠΎΠ΅Π½ ΡΡΠ°ΡΡΠΈΡΡΡΡΠΈΠΉ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, ΡΠΏΠΎΡΠΎΠ±Π½ΡΠΉ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π½Π° Python Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΡΠΌΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠ° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΅ΠΌΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΡΠΊΠΎΡΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠΎΠ΄Π°.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ pypy ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
sudo apt install pypy3
Π ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΡΠΈΠΌ ΠΊΠΎΠ΄ Ρ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ:
pypy3 main.py
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ Π³ΠΎΠ²ΠΎΡΡΡ ΡΠ°ΠΌΠΈ Π·Π° ΡΠ΅Π±Ρ: ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π°ΠΏΡΠΈΠΎΡΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅Π΅, Π½Π΅ΠΆΠ΅Π»ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄.Β
ΠΡΠ΅ΠΌΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΌΠ΅Π½ΡΡΠΈΠ»ΠΎΡΡ Π΅ΡΡ Π½Π° 68%. Π Π΄Π»Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π½Π΅ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ ΠΌΠ΅Π½ΡΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄.
Π‘ΠΏΡΠ°Π²Π΅Π΄Π»ΠΈΠ²ΠΎΡΡΠΈ ΡΠ°Π΄ΠΈ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π·Π° ΡΡΡΡ Π³Π»ΡΠ±ΠΈΠ½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ, Π½Π΅ ΡΠΌΠΎΠ³ΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡΡΡ Π² pypy. Π Π΄Π»Ρ Π½ΠΈΡ ΠΏΡΠΈΠ΄ΡΡΡΡ ΠΈΡΠΊΠ°ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈ. ΠΠΎ ΡΠ°ΠΌΡΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ (ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ twisted, django, numpy, scikit-learn ΠΈ Π΄ΡΡΠ³ΠΈΠ΅) ΠΈΠΌ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΈ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½Ρ.
Π ΠΊΠ°ΠΊ Π΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ?
Π ΠΌΠΈΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, Π½ΠΎ ΠΎΠ½ΠΈ ΡΠΆΠ΅ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΡΠ°Π΄ΠΈΠΊΠ°Π»ΡΠ½ΡΡ , ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΡΠΈΡ ΠΊΠ°ΡΠ΄ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΠΊΠΎΠ΄Π° ΠΈ (ΠΈΠ»ΠΈ) Π΄Π°ΠΆΠ΅ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π‘ΡΠ΅Π΄ΠΈ Π½ΠΈΡ :
- ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ Ρ ΡΠ°Π½ΠΈΠΌΡΡ Π΄Π°Π½Π½ΡΡ ΡΠΎ ΡΠΏΠΈΡΠΊΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π° pandas. DataFrame.
- Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΠΎΠ³ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π°Π΄Π°ΠΏΡΠ°ΡΠΈΡ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ cython
- ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΠΏΠΎΡΠΎΠΊΠΈ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Nvidia CUDA.
- Π, Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π΅ΡΠ»ΠΈ Π·Π°ΡΡΠ°ΡΡ ΠΎΡ ΠΏΠΎΡΠ΅ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΡΠ΅Π²ΡΡΠ°ΡΡ Π·Π°ΡΡΠ°ΡΡ ΠΎΡ ΠΊΠ°ΡΠ΄ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠ΄Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΠΊΡΠΈΡΠΈΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π° Π½Π° ΡΠ·ΡΠΊΠ΅ C++ ΠΈ ΠΎΡΠΎΡΠΌΠΈΡΡ ΠΈΡ Π² Π²ΠΈΠ΄Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΈΠ· Python-ΠΊΠΎΠ΄Π°.
ΠΡΠΎΠ³ΠΈ
ΠΡΠ°ΠΊ, Π² Ρ ΠΎΠ΄Π΅ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΡΠ΅ΡΠ΅ΡΡΠ²ΠΈΡ ΠΌΡ
- Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ ΠΊΠΎΠ΄
- ΠΈΠ·ΠΌΠ΅ΡΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ (ΠΏΠΎ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ)
- ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π»ΠΈ Π΅Π³ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·
- ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π² Π²ΠΈΠ΄Π΅ Π³ΡΠ°ΡΠΈΠΊΠΎΠ² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π½ΠΈΠΆΠ΅.
Β
Π ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΡΠ»ΡΡΠ°Π΅Π² ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ ΡΠ»ΡΡΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅ΡΡΠ΅ΠΌΡΠΉ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π² Π΄Π²Π° ΡΠ°Π·Π°, ΡΠ°ΠΊ ΡΡΠΎ ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΡΠ΅Π»Ρ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΠ°.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅.
ΠΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠ° Python?
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠ° Python.
Π Python ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Python, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΌΠΎΠ΄ΡΠ»Ρ time, timeit ΠΈ datetime, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Ρ ΡΠ°Π½ΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π½Π°ΡΠ°Π»Π° ΠΈ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π°, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°ΡΡΡΠΈΡΠ°ΡΡ Π²ΡΠ΅ΠΌΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π°.
ΠΠ»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ°Π·Π½ΠΈΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ:
- ΠΠΎΠ΄ΡΠ»Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Python ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ. ΠΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠΌ ΠΌΠΎΠ΄ΡΠ»ΡΠΌ Python. ΠΌΠ΅ΡΠΎΠ΄ time.time() ΠΌΠΎΠ΄ΡΠ»Ρ Time ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ Ρ Π½Π°ΡΠ°Π»Π° ΡΠΏΠΎΡ ΠΈ. ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π²ΠΈΡΠΎΠΊΠΎΡΠ½ΡΡ ΡΠ΅ΠΊΡΠ½Π΄ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ.
- ΠΠΎΠ΄ΡΠ»Ρ Python datetime ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ Π΄Π°ΡΡ. ΡΠ΅ΠΉΡΠ°Ρ() 9Π€ΡΠ½ΠΊΡΠΈΡ 0011 ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅ΠΊΡΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ datetime.
- Python ΠΠΎΠ΄ΡΠ»Ρ timeit Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π° n ΡΠ°Π· (Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β 1000000), ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ΅Π»Π΅Π²Π°Π½ΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°.
ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Python Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ time-3. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ, ΡΠ²Π΅Π»ΠΈΡΠΈΠ² ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ΅Ρ ΠΆΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ².
Python3
ΠΈΠΌΠΏΠΎΡΡ Π²ΡΠ΅ΠΌΡ Β Π½Π°ΡΠ°Π»ΠΎ = time.time() Β a = 0 Π΄Π»Ρ i Π² ΠΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ( 1000 ): Β Β Β Β a + = (i * * 100 9004 1 ) Β ΠΊΠΎΠ½Π΅Ρ = Π²ΡΠ΅ΠΌΡ.Π²ΡΠ΅ΠΌΡ() Β print ( "ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:" , Β Β Β Β Β Β (ΠΊΠΎΠ½Π΅Ρ - Π½Π°ΡΠ°Π»ΠΎ) * 10 * * 3 , "ΠΌΡ" ) |
ΠΡΡ ΠΎΠ΄: 90 003
ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ: 0,77056884765625 ΠΌΡΠΡΠΈΠΌΠ΅Ρ 2: ΠΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π΄Π»Ρ ΡΠ΅Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π° ΠΏΡΡΠ΅ΠΌ ΡΡΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π½Π° ΠΈΡΠ΅ΡΠ°ΡΠΈΡ
ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ. ΠΡ Π²ΠΈΠ΄ΠΈΠΌ ΠΎΠ±ΡΡΡ ΡΠ΅Π½Π΄Π΅Π½ΡΠΈΡ ΠΊ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΏΡΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ ΡΠΈΡΠ»Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠΉ ΡΡΠ΅Π½Π΄ ΠΈΠ»ΠΈ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΡΠΈΡΠ°ΡΠ΅Π½ΠΈΡ.
Python3
ΠΈΠΌΠΏΠΎΡΡ Π²ΡΠ΅ΠΌΡ Β Π΄Π»Ρ j Π² ΡΡΠ΄ ( 100 , 5501 , 100 9 0041 ): Β Β Β Β Β Β Β Β Π½Π°ΡΠ°Π»ΠΎ = 0041 Β Β Β Β a = 0 Β Β Β Β Π΄Π»Ρ i Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ (j): Β Β Β Β Β Β Β Β a + = (i * * 100 ) Β Β Β Β Β Β Β Β end = time. time() Β Β Β Β Β Β Β Β Β ΠΏΠ΅ΡΠ°ΡΡ (f "ΠΡΠ΅ΡΠ°ΡΠΈΡ: {j}\tΠΠ°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ: {(ΠΊΠΎΠ½Π΅Ρ-Π½Π°ΡΠ°Π»ΠΎ)*10**3:.03f}ΠΌΡ" ) |
ΠΡΠ²ΠΎΠ΄: 9 0003
ΠΡΠ΅ΡΠ°ΡΠΈΡ: 100 ΠΠ°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ: 0,105 ΠΌΡ ΠΡΠ΅ΡΠ°ΡΠΈΡ: 200 ΠΠ°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ: 0,191 ΠΌΡ ΠΡΠ΅ΡΠ°ΡΠΈΡ: 300 ΠΠ°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ: 0,291 ΠΌΡ ΠΡΠ΅ΡΠ°ΡΠΈΡ: 400 ΠΠ°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ: 0,398 ΠΌΡ ΠΡΠ΅ΡΠ°ΡΠΈΡ: 500 ΠΠ°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ: 0,504 ΠΌΡ ΠΡΠ΅ΡΠ°ΡΠΈΡ: 600 ΠΠ°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ: 0,613 ΠΌΡ ΠΡΠ΅ΡΠ°ΡΠΈΡ: 700 ΠΠ°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ: 0,791 ΠΌΡ ... ΠΡΠ΅ΡΠ°ΡΠΈΡ: 5400 ΠΠ°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ: 6,504 ΠΌΡ ΠΡΠ΅ΡΠ°ΡΠΈΡ: 5500 ΠΠ°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ: 6,630 ΠΌΡ
ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅: ΠΠ΄Π΅ΡΡ ΠΌΡ ΡΡΠ΅ΠΊΠ»ΠΈ Π²ΡΠ²ΠΎΠ΄ Π΄Π»Ρ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡΠΈ. ΠΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ ΡΡΠ°Π²Π½ΠΈΠΌ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΎΡ 100 Π΄ΠΎ 700, ΡΠΎ ΠΎΠ½ΠΈ ΠΌΠ΅Π½ΡΡΠ΅ 1 ΠΌΡ. ΠΠΎ Π±Π»ΠΈΠΆΠ΅ ΠΊ ΠΊΠΎΠ½ΡΡ ΡΠΈΠΊΠ»Π° ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ~ 7 ΠΌΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΡΠ΅ΠΌΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ. ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠΈΠΊΠ» ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π· Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π½Π΅ΡΠ½Π΅ΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ DateTime Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ datetime Π² Python ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ datetime.now() Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ ΠΌΠ΅ΡΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π°ΡΠ°Π»Π° ΠΈ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΈ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ°Π·Π½ΠΈΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°.
Python3
ΠΈΠ· datetime ΠΈΠΌΠΏΠΎΡΡ datetime Β 9000 3 Β a = 0 Π΄Π»Ρ i Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ( 1000 ): 9 0040 Β Β Β Β a + = (i * * 100 ) Β ΠΊΠΎΠ½Π΅Ρ = datetime.now() Β td = (ΠΊΠΎΠ½Π΅Ρ - start). total_seconds() * 10 * * 3 ΠΏΠ΅ΡΠ°ΡΡ 9 0042 |
ΠΡΠ²ΠΎΠ΄:
ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ: 0,766 ΠΌΡ
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
timeit 90 ΠΠΎΠ΄ΡΠ»Ρ 011 ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡΠΡΠΎ Π΄Π°ΡΡ Π½Π°ΠΌ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π»ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ . ΠΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π½Π°ΠΉΡΠΈ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ΄Π° Python. ΠΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ timeit() , ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅. Π€ΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ timeit.timeit(stmt, setup, timer, number) ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅ΡΡΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°:
- stmt β ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ; ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠΎ Β«ΠΏΡΠΎΠΉΡΠΈΒ».
- setup β ΡΡΠΎ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΡΠΊΠΎΠΌ stmt; ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠΎ Β«ΠΏΡΠΎΠΉΡΠΈΒ». ΠΠ±ΡΡΠ½ΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠΎ Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°.
- ΡΠ°ΠΉΠΌΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ timeit.Timer; ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠ°Π·ΡΠΌΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΠ°ΠΊ ΡΡΠΎ Π²Π°ΠΌ Π½Π΅ ΠΎ ΡΠ΅ΠΌ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡΡ.
- Π§ΠΈΡΠ»ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ stmt.
ΠΡΠΈΠΌΠ΅Ρ 1. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ timeit Π²ΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ΄Π° Python Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
Python3
ΠΈΠΌΠΏΠΎΡΡ timeit Β mysetup 9004 1 = "ΠΈΠ· ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠ° sqrt" Β mycode = Β Β Β Β Β Β Β Β Β Β Β Β Β exec_time = timeit.timeit(stmt = ΠΌΠΎΠΉ ΠΊΠΎΠ΄, Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Π½Π°ΡΡΡΠΎΠΉΠΊΠ° = mysetup, Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Π½ΠΎΠΌΠ΅Ρ = 1000000 ) * 10 * * 3 ΠΏΠ΅ΡΠ°ΡΡ (f Β«ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ: {exec_time:. 03f} ΠΌΡΒ» ) |
ΠΡΠ²ΠΎΠ΄:
ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ: 71,161 ΠΌΡ
ΠΡΠΈΠΌΠ΅Ρ 2: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ timeit ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ, Π·Π°ΡΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ ΠΏΡΠΎΡΡΡΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΠΊΠΎΠ΄Π° Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΈΡΠ°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Python, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ timeit CLI-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.
time ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΎΡΠΌΠ΅ΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²:
- -s [βsetup] : ΠΠΎΠ΄ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΊΠΎΠ΄Π°.
- -n [βΡΠΈΡΠ»ΠΎ ]: ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π· Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ.
- β p [βprocess] : ΠΠ·ΠΌΠ΅ΡΡΡΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π²ΠΌΠ΅ΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π°ΡΡΠ΅Π½Π½ΡΡ ΡΠ°ΡΠΎΠ².
- ΠΠΏΠ΅ΡΠ°ΡΠΎΡ : ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π²Π·ΡΡΡΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°.
timeit ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ:
python -m timeit -s "import random" "l = [x**9 for x in range(random. randint(1000, 1500))]"
ΠΡΠ²ΠΎΠ΄:
500 ΡΠΈΠΊΠ»ΠΎΠ², Π»ΡΡΡΠΈΠΉ ΠΈΠ· 5: 503 ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ Π½Π° ΡΠΈΠΊΠ»
ΠΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Python
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ Π½Π°ΡΡΠΈΠΌΡΡ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°ΡΡ Π²ΡΠ΅ΠΌΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² Python . ΠΡ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌΠΈ ΠΊΠΎΠ΄Π°ΠΌΠΈ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π° Π±ΡΡΡΡΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²Π»ΠΈΡΠ΅Ρ Π½Π° Π²ΡΠ΅ΠΌΡ Π² Python.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ, ΡΠ°ΡΡΠΎ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ Β«ΠΡΠ΅Π²ΡΡΠ΅Π½ΠΎ Π²ΡΠ΅ΠΌΡΒ» ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π². Π§ΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π½Π°ΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Π»ΡΡΡΠ΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ Π·Π½Π°ΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π΄Π»Ρ Π΅Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ Python, Π΄Π»Ρ ΡΠ°ΡΡΠ΅ΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² Python 9.0010 .
ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Python ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΌ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ°ΠΊΡΠΎΡΠΎΠ²:
- ΠΠ΄Π½Π° ΠΈ ΡΠ° ΠΆΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ΅Π½Π΅Π½Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°Π·Π½ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ²
- ΠΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°
- ΠΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ
- ΠΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°
- ΠΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎ ΠΈΠ·-Π·Π° Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ
Π Π°ΡΡΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ time()
ΠΡ Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΡ time. time()
. ΠΠ½ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΠΌΠΎΠ΄ΡΠ»Ρ time
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ Π²ΡΠ΅ΠΌΡ Π½Π°ΡΠ°Π»Π° Π΄ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΈΠΊΠ»Π° for, Π° Π·Π°ΡΠ΅ΠΌ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ Π²ΡΠ΅ΠΌΡ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΡΠΎΠΊΠΈ ΠΏΠ΅ΡΠ°ΡΠΈ. Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π½Π°ΡΠ°Π»Π° ΠΈ Π±ΡΠ΄Π΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π€ΡΠ½ΠΊΡΠΈΡ time.time()
Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π° *nix.
Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ° #Π²ΡΠ΅ΠΌΡ Π½Π°ΡΠ°Π»Π° Π½Π°ΡΠ°Π»ΠΎ = Π²ΡΠ΅ΠΌΡ.Π²ΡΠ΅ΠΌΡ() Π΄Π»Ρ i Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (3): ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ("ΠΡΠΈΠ²Π΅Ρ") # Π²ΡΠ΅ΠΌΡ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΊΠΎΠ½Π΅Ρ = Π²ΡΠ΅ΠΌΡ.Π²ΡΠ΅ΠΌΡ() # ΠΎΠ±ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ print("ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ - ", end-start)
ΠΡΠΈΠ²Π΅Ρ
ΠΡΠΈΠ²Π΅Ρ
ΠΡΠΈΠ²Π΅Ρ
ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ 1.430511474609375e-05
Π Π°ΡΡΡΠΈΡΠ°ΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ timeit()
ΠΡ Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΡ timeit()
. ΠΠ½ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΠΌΠΎΠ΄ΡΠ»Ρ timeit
. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ
. ΠΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ, ΡΡΠΎ Π²Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π·Π° Π΄Π΅ΡΡΡΡΡ Π΄ΠΎΠ»Ρ ΡΠ΅ΠΊΡΠ½Π΄Ρ.
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈ Π²Π΅ΡΡ ΠΊΠΎΠ΄, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΈΠΌΠΏΠΎΡΡ, Π·Π°ΠΊΠ»ΡΡΠ΅Π½ Π² ΡΡΠΎΠΉΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ. ΠΠΎΠ΄ ΡΠ΅ΡΡΠ° Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΠ°. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ time.timeit()
. Π€ΡΠ½ΠΊΡΠΈΡ timeit()
ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π΅Π³ΠΎ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ ΡΠ°Π²Π½ΡΠΌ 100 ΡΠΈΠΊΠ»Π°ΠΌ.
Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΊΠΎΠ΄_ΡΠ΅ΡΡΠ° =Β """ Π° = Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ (100000) Π± = [] Π΄Π»Ρ Ρ Π²: Π±. Π΄ΠΎΠ±Π°Π²ΠΈΡΡ (Ρ + 2) """ total_time = timeit.timeit(test_code, ΡΠΈΡΠ»ΠΎ=200) print("ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ -",Β total_time)
ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ 4.26646219700342
Π Π°ΡΡΡΠΈΡΠ°ΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ time.clock()
ΠΡΠ΅ ΠΎΠ΄Π½Π° ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ time Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ β ΡΡΠ½ΠΊΡΠΈΡ time.clock()
. time.clock()
ΠΈΠ·ΠΌΠ΅ΡΡΠ΅Ρ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
Unix, Π° Π½Π΅ Π²ΡΠ΅ΠΌΡ ΡΡΠ΅Π½Ρ. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ΅Π»Π΅ΠΉ ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΠ»ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ. time.clock()
ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΡΡ ΡΠΎΡΠ½ΠΎΡΡΡ, ΡΠ΅ΠΌ time.time()
. ΠΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ΅ ΡΡΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ. ΠΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Windows.
Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ° t0= Π²ΡΠ΅ΠΌΡ.ΡΠ°ΡΡ() ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ("ΠΡΠΈΠ²Π΅Ρ") t1 = Π²ΡΠ΅ΠΌΡ.ΡΠ°ΡΡ()Β -Β t0 print("ΠΡΠ΅ΠΌΡ ΠΈΡΡΠ΅ΠΊΠ»ΠΎ: ",Β t1Β βΒ t0)Β ΠΡΠΎΡΠ»ΠΎ # ΡΠ΅ΠΊΡΠ½Π΄ Π¦Π (Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ)
ΠΡΠΈΠ²Π΅Ρ
ΠΡΠΎΡΠ΅Π΄ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ: -0,02442
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
time.clock()
«Π£ΡΡΠ°ΡΠ΅Π»ΠΎ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 3.3». ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ perf_counter() ΠΈΠ»ΠΈ process_time() Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠ΅ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.
time.perf_counter()
β Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (Π² Π΄ΠΎΠ»ΡΡ
ΡΠ΅ΠΊΡΠ½Π΄Ρ) ΡΡΠ΅ΡΡΠΈΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Ρ. Π΅. ΡΠ°ΡΡ Ρ ΡΠ°ΠΌΡΠΌ Π²ΡΡΠΎΠΊΠΈΠΌ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΠΊΠΎΠΉ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠ½ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ, ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ½Π°, ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ.
time.process_time()
— ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (Π² Π΄ΠΎΠ»ΡΡ
ΡΠ΅ΠΊΡΠ½Π΄Ρ) ΡΡΠΌΠΌΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΠ½ Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ, ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ½Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ,
Π½Π°ΡΠ°Π»ΠΎ = Π²ΡΠ΅ΠΌΡ.ΠΏΡΠΎΡΠ΅ΡΡ_Π²ΡΠ΅ΠΌΡ() ... ΡΠ΄Π΅Π»Π°ΠΉ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π΅ =Β (time.process_time()Β -Β Π½Π°ΡΠ°Π»ΠΎ) 90Β 159Π Π°ΡΡΡΠΈΡΠ°ΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ datetime.now()
ΠΡ Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ
datetime.datetime.now()
ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρdatetime
, Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ³ΠΎ Π² Python. ΠΠ½ Π½Π΅ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΊΡΠΈΠΏΡ Π² ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½ΡΡ ΡΡΡΠΎΠΊΡ, ΠΊΠ°ΠΊ Π²timeit()
. ΠΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΡΠ΅ΠΌtimeit()
, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠ°Π·Π½ΠΈΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π² Π²ΠΈΠ΄Π΅ Π΄Π½Π΅ΠΉ, ΡΠ°ΡΠΎΠ², ΠΌΠΈΠ½ΡΡ ΠΈ Ρ. Π΄.Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ Π»ΡΠ±ΡΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΠ°ΡΠ΅ΠΌ Π²ΡΠ·ΠΎΠ²ΠΈΡΠ΅
datetime.datetime.now()
ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΈ Π½Π°ΡΠ°Π»Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.ΠΈΠΌΠΏΠΎΡΡ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ start =Β datetime.datetime.now() ΡΠΏΠΈΡΠΎΠΊ1 =Β [4,Β 2,Β 3,Β 1,Β 5] ΡΠΏΠΈΡΠΎΠΊ1.sort() ΠΊΠΎΠ½Π΅Ρ =Β datetime.datetime.now() ΠΏΠ΅ΡΠ°ΡΡ (ΠΊΠΎΠ½Π΅Ρ-Π½Π°ΡΠ°Π»ΠΎ)
0:00:00.000007ΠΡΡΠΈΡΠ»ΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ %%time
ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ
%%time 9ΠΠΎΠΌΠ°Π½Π΄Π° 0042 Π΄Π»Ρ ΡΠ°ΡΡΠ΅ΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π·Π°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ. ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Jupyter Notebook . ΠΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΠ΅Π½Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΠ΅ΠΉΠΊΠΈ.
%%Π²ΡΠ΅ΠΌΡ [Β x**2Β Π΄Π»ΡΒ x Π²Β Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (10000)] 90Β 159ΠΠΎΡΠ΅ΠΌΡ timeit() β Π»ΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Python?
1. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
time.clock()
Π² Windows ΠΈtime.time()
Π² Mac ΠΈΠ»ΠΈ Linux. ΠΠ΄Π½Π°ΠΊΠΎtimeit()
Π±ΡΠ΄Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΠΈΠ±ΠΎtime.