python Π·Π°ΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния участка ΠΊΠΎΠ΄Π°

Как ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΠ΅Ρ‡ΡŒ врСмя выполнСния ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ суммарноС врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π•ΡΡ‚ΡŒ ΠΊΠΎΠ΄ с трСмя сотрировками, Π΅ΡΡ‚ΡŒ ΠΎΡ‚Ρ‡Π΅Ρ‚ ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Как ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΠ΅Ρ‡ΡŒ врСмя выполнСния ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ суммарноС врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π•Ρ‰Π΅, Ссли Π½Π΅ слоТно, посовСтуйтС ΠΊΠ°ΠΊ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

4 ΠΎΡ‚Π²Π΅Ρ‚Π° 4

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΌΠΎΠΆΠ½ΠΎ time ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ (часто встроСна Π² shell):

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ сколько Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚, ΠΌΠΎΠΆΠ½ΠΎ cProfile ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ:

Π’ графичСском Π²ΠΈΠ΄Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π² KCachegrind ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄. Π‘ΠΎΠ»ΡŒΡˆΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²: How can you profile a script?

line_profiler позволяСт построчно сравнСниС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅:

timeit

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ timeit ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ:

Π’ΠΎΡ‚ ΠΆΠ΅ интСрфСйс прСдоставляСт pyperf ΠΌΠΎΠ΄ΡƒΠ»ΡŒ (ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ):

Для ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ %timeit magic Π² ipython/jupyter notebook ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

reporttime.py

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, стоит ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ (тСсты), Ρ‡Ρ‚ΠΎ измСнСния Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ускорили Π΅Ρ‘ Ρ€Π°Π±ΠΎΡ‚Ρƒ (сравнСниС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ). Для этого ΠΌΠΎΠΆΠ½ΠΎ pytest-benchmark ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹

Π’Π°Π±Π»ΠΈΡ†Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π° ΡƒΠΆΠ΅ отсортированном Π²Π²ΠΎΠ΄Π΅ sorted_insertion() функция Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ (Π² этом случаС Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ врСмя для этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ трСбуСтся ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½Ρ‹ΠΌ для sorted_selection() ΠΈ sorted_bubble() ). Для случайного Π²Π²ΠΎΠ΄Π°, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ одинаковая. sorted_bubble() Ρ…ΡƒΠΆΠ΅ Π²ΠΎ всСх Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ….

make-figures.py

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ врСмя выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Ρ€Π°Π·Π½Ρ‹Ρ… Π²Π²ΠΎΠ΄ΠΎΠ²:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹

python Π·Π°ΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния участка ΠΊΠΎΠ΄Π°. r9zzG. python Π·Π°ΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния участка ΠΊΠΎΠ΄Π° Ρ„ΠΎΡ‚ΠΎ. python Π·Π°ΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния участка ΠΊΠΎΠ΄Π°-r9zzG. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° python Π·Π°ΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния участка ΠΊΠΎΠ΄Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° r9zzG. Π•ΡΡ‚ΡŒ ΠΊΠΎΠ΄ с трСмя сотрировками, Π΅ΡΡ‚ΡŒ ΠΎΡ‚Ρ‡Π΅Ρ‚ ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Как ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΠ΅Ρ‡ΡŒ врСмя выполнСния ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ суммарноС врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π•Ρ‰Π΅, Ссли Π½Π΅ слоТно, посовСтуйтС ΠΊΠ°ΠΊ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. python Π·Π°ΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния участка ΠΊΠΎΠ΄Π°. EsthJ. python Π·Π°ΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния участка ΠΊΠΎΠ΄Π° Ρ„ΠΎΡ‚ΠΎ. python Π·Π°ΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния участка ΠΊΠΎΠ΄Π°-EsthJ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° python Π·Π°ΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния участка ΠΊΠΎΠ΄Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° EsthJ. Π•ΡΡ‚ΡŒ ΠΊΠΎΠ΄ с трСмя сотрировками, Π΅ΡΡ‚ΡŒ ΠΎΡ‚Ρ‡Π΅Ρ‚ ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Как ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΠ΅Ρ‡ΡŒ врСмя выполнСния ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ суммарноС врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π•Ρ‰Π΅, Ссли Π½Π΅ слоТно, посовСтуйтС ΠΊΠ°ΠΊ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Рисунки ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ sorted_insertion() ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π° отсортированном Π²Π²ΠΎΠ΄Π΅ ( seq_range =0,1,2,3,4. n-1 ). И ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½ΠΎΠ΅ Π½Π° случайном Π²Π²ΠΎΠ΄Π΅ ( seq_random ). ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄ log2(N) ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΡ‘Π½Π½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ роста Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π² зависимости ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π²Π²ΠΎΠ΄Π°:

reporttime + pandas

Π‘ΠΎΠ±Ρ€Π°Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ сортировки ΠΈΠ· daedra.py ( sorted_*() ) для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² (ΡƒΠΆΠ΅ отсортированный/случайный) ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Π²Π²ΠΎΠ΄Π° (Π΄Π»ΠΈΠ½Ρ‹ ΠΎΡ‚ 1 Π΄ΠΎ 100000):

Π£Π΄ΠΎΠ±Π½ΠΎ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ pandas.DataFrame :

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π° ΡƒΠΆΠ΅ отсортированном Π²Π²ΠΎΠ΄Π΅:

python Π·Π°ΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния участка ΠΊΠΎΠ΄Π°. 6Yjk5. python Π·Π°ΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния участка ΠΊΠΎΠ΄Π° Ρ„ΠΎΡ‚ΠΎ. python Π·Π°ΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния участка ΠΊΠΎΠ΄Π°-6Yjk5. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° python Π·Π°ΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния участка ΠΊΠΎΠ΄Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 6Yjk5. Π•ΡΡ‚ΡŒ ΠΊΠΎΠ΄ с трСмя сотрировками, Π΅ΡΡ‚ΡŒ ΠΎΡ‚Ρ‡Π΅Ρ‚ ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Как ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΠ΅Ρ‡ΡŒ врСмя выполнСния ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ суммарноС врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π•Ρ‰Π΅, Ссли Π½Π΅ слоТно, посовСтуйтС ΠΊΠ°ΠΊ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

ПовСдСниС Π½Π° случайном Π²Π²ΠΎΠ΄Π΅:

python Π·Π°ΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния участка ΠΊΠΎΠ΄Π°. Kr2Jr. python Π·Π°ΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния участка ΠΊΠΎΠ΄Π° Ρ„ΠΎΡ‚ΠΎ. python Π·Π°ΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния участка ΠΊΠΎΠ΄Π°-Kr2Jr. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° python Π·Π°ΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния участка ΠΊΠΎΠ΄Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Kr2Jr. Π•ΡΡ‚ΡŒ ΠΊΠΎΠ΄ с трСмя сотрировками, Π΅ΡΡ‚ΡŒ ΠΎΡ‚Ρ‡Π΅Ρ‚ ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Как ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΠ΅Ρ‡ΡŒ врСмя выполнСния ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ суммарноС врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π•Ρ‰Π΅, Ссли Π½Π΅ слоТно, посовСтуйтС ΠΊΠ°ΠΊ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Или ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π²Π²ΠΎΠ΄Π° Π½Π° ΠΎΠ΄Π½ΠΎΠΌ Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

timeit – врСмя выполнСния Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π° Python.

ВрСмя выполнСния Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π° Python.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ timeit прСдоставляСт простой интСрфСйс для опрСдСлСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π° Python. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π·Π°Π²ΠΈΡΡΡ‰ΡƒΡŽ ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ расчСт Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ сниТаСт влияниС Π·Π°Ρ‚Ρ€Π°Ρ‚ Π½Π° запуск ΠΈΠ»ΠΈ останов Π½Π° расчСт Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π·Π° счСт ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ выполнСния ΠΊΠΎΠ΄Π°.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ модуля

ΠœΠ΅Ρ‚ΠΎΠ΄ timeit () запускаСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ настройки ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ выполняСт основной ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠ΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. АргумСнт timeit () опрСдСляСт, сколько Ρ€Π°Π· Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€; ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ – 1000000.

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

timeit () выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ установки ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ основной ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ count Ρ€Π°Π·. Он Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ совокупноС количСство Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ основного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² словарС

Π’ этом Π±ΠΎΠ»Π΅Π΅ слоТном ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ сравниваСтся количСство Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ трСбуСтся для заполнСния словаря большим количСством Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с использованиСм Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, для настройки Timer Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ нСсколько констант. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ setup_statement ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ список ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ, содСрТащих строки ΠΈ Ρ†Π΅Π»Ρ‹Π΅ числа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ основными ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ для создания словарСй, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ строки Π² качСствС ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ сохраняя Ρ†Π΅Π»Ρ‹Π΅ числа Π² качСствС связанных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

БлуТСбная функция show_results () ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π² ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. ΠœΠ΅Ρ‚ΠΎΠ΄ timeit () Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Π’Ρ‹Π²ΠΎΠ΄ show_results () ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ это Π² количСство Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ трСбуСтся Π½Π° ΠΎΠ΄Π½Ρƒ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ, Π° Π·Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎ срСднСго количСства Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ для сохранСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта Π² словарС.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Timer – это многострочная строка с сохранСнными ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ для обСспСчСния ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΈ запускС. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ – это константа, установлСнная для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ списка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ словаря.

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ добавляСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ KeyError ΠΏΡ€ΠΈ поискС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ значСния.

И послСдний ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Β« in Β», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π΅ΡΡ‚ΡŒ Π»ΠΈ Π² словарС ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡.

ΠŸΡ€ΠΈ запускС скрипт Π²Ρ‹Π΄Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Из ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ интСрфСйсу timeit прСдоставляСт интСрфСйс ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки для тСстирования ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π±Π΅Π· инструмСнтов.

НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠΌΠΎΡ‰ΡŒ:

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с Π±ΠΎΠ»Π΅Π΅ слоТным ΠΊΠΎΠ΄ΠΎΠΌ, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ тСст, ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ запускаСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ тСстирования.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Python?

Π£ мСня Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Π² Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ. Π― Ρ…ΠΎΡ‡Ρƒ Π·Π½Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ врСмя, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ Π±Π΅Π³.

ΠΈ timeit module, Π½ΠΎ, ΠΏΠΎΡ…ΠΎΠΆΠ΅, это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π°. Π― Ρ…ΠΎΡ‡Ρƒ Π·Π°ΡΠ΅Ρ‡ΡŒ врСмя всСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

24 ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²

самый простой способ Π² Python:

это ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ Π΄Π΅ΡΡΡ‚ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ сСкунды для запуска.

Π― ΠΏΠΎΠ»ΠΎΠΆΠΈΠ» это timing.py ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π² свои

time.clock() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ процСссорноС врСмя, Ρ‡Ρ‚ΠΎ позволяСт Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ врСмя, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ этим процСссом (Π² Unix Π² любом случаС). Π’ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ говорится:»Π² любом случаС, это функция для использования для Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈΠ½Π³Π° Python ΠΈΠ»ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² синхронизации»

МнС ΠΎΡ‡Π΅Π½ΡŒ нравится ΠΎΡ‚Π²Π΅Ρ‚ ΠΏΠΎΠ»Π° ΠœΠ°ΠΊΠ³ΠΈΡ€Π°, Π½ΠΎ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Python3. Π˜Ρ‚Π°ΠΊ, для Ρ‚Π΅Ρ…, ΠΊΠΎΠΌΡƒ интСрСсно: Π²ΠΎΡ‚ модификация Π΅Π³ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π°, которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Python 3 Π½Π° *nix (я полагаю, ΠΏΠΎΠ΄ Windows, Ρ‡Ρ‚ΠΎ часы () Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ вмСсто time ()):

Если Π²Ρ‹ считаСтС это ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ, Π²Ρ‹ всС Ρ€Π°Π²Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠ³ΠΎΠ»ΠΎΡΠΎΠ²Π°Ρ‚ΡŒ Π·Π° Π΅Π³ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ вмСсто этого, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ сдСлал Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ;).

Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ„Π°ΠΉΠ» python profiler для измСрСния процСссорного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, сколько Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ тратится Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ сколько Ρ€Π°Π· вызываСтся каТдая функция. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ вашСго скрипта, Π½Π΅ зная, с Ρ‡Π΅Π³ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ. ΠΎΡ‚Π²Π΅Ρ‚ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ вопросу SO довольно Ρ…ΠΎΡ€ΠΎΡˆΠΎ. ВсСгда Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ‚ΠΎΠΆΠ΅.

Π²ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ скрипт с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ cProfile ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки:

ΠΌΠ½Π΅ нравится Π²Ρ‹Π²ΠΎΠ΄ datetime ΠΌΠΎΠ΄ΡƒΠ»ΡŒ обСспСчиваСт, Π³Π΄Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΏΠ°Π΄Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΄Π½ΠΈ, часы, ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ etc. ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости Π² ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌ Π²ΠΈΠ΄Π΅.

ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€

ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅:

Π΅Ρ‰Π΅ Π»ΡƒΡ‡ΡˆΠ΅ для Linux: /usr/bin/time

Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ rogeriopvl ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π½ΠΎ Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° Π±ΠΎΠ»Π΅Π΅ конкрСтная информация, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнный ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ python. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ эту страницу:

ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π²Π°ΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ врСмя, ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

я посмотрСл Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŒ timeit, Π½ΠΎ, ΠΏΠΎΡ…ΠΎΠΆΠ΅, это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π°. Π― Ρ…ΠΎΡ‡Ρƒ Π·Π°ΡΠ΅Ρ‡ΡŒ врСмя всСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ your_module.main() функция ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠ΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π² качСствС Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°.

для измСрСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ процСссора (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ врСмя time.sleep() ) для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ profile ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ( cProfile Π½Π° Python 2):

Ipython «timeit» любой скрипт:

Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.clock()

Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.perf_counter()

Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Π² Π΄Ρ€ΠΎΠ±Π½Ρ‹Ρ… сСкундах) счСтчика ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‚. Π΅. часы с самым высоким доступным Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ для измСрСния ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π­Ρ‚ΠΎ Ρ‚ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ врСмя, ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠ΅Π΅ Π²ΠΎ врСмя сна ΠΈ общСсистСмный.

Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.process_time()

Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Π² Π΄Ρ€ΠΎΠ±Π½Ρ‹Ρ… сСкундах) суммы систСмы ΠΈ врСмя использования процСссора для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ процСсса. Π­Ρ‚ΠΎ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²ΠΎ врСмя сна.

ΠŸΡ€ΠΎΡΡ‚ΠΎ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ timeit ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. Он Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ с Python 2, Ρ‚Π°ΠΊ ΠΈ с Python 3

ΠΎΠ½ возвращаСтся Ρ‡Π΅Ρ€Π΅Π· нСсколько сСкунд, ΠΈ Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ врСмя выполнСния. ΠŸΡ€ΠΎΡΡ‚ΠΎ, Π½ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡ… Π² основной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая запускаСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ врСмя выполнСния, Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ρ‚ΠΎ Π²ΠΎΠ·ΡŒΠΌΠΈΡ‚Π΅ свой ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ «Start» ΠΈ вычислитС Π΅Π³ΠΎ ΠΊΠ°ΠΊ

Π΅ΡΡ‚ΡŒ timeit ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΊΠΎΠ΄ΠΎΠ² python. Он ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… python (https://docs.python.org/2/library/timeit.html)

МнС Ρ‚ΠΎΠΆΠ΅ нравится ΠΎΡ‚Π²Π΅Ρ‚ ΠΏΠΎΠ»Π° ΠœΠ°ΠΊΠ³ΠΈΡ€Π° ΠΈ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π» Ρ„ΠΎΡ€ΠΌΡƒ контСкстного ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°, которая большС соотвСтствовала ΠΌΠΎΠΈΠΌ потрСбностям.

это ΠΎΡ‚Π²Π΅Ρ‚ ΠΏΠΎΠ»Π° ΠœΠ°ΠΊΠ³ΠΈΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для мСня. На случай, Ссли Ρƒ ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ.

Π²Ρ‹Π·ΠΎΠ² timing.main() ΠΈΠ· вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ послС ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Ρ„Π°ΠΉΠ»Π°.

Timeit-класс Π² python, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для вычислСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π°.

Default_timer-это ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² этом классС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для измСрСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ настСнных часов, Π° Π½Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния процСссора. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, этому ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ процСсса. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠ½ ΠΏΠΎΠ»Π΅Π·Π΅Π½ для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π°.

ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

line_profiler Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ врСмя выполнСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… строк ΠΊΠΎΠ΄Π°. ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² C Ρ‡Π΅Ρ€Π΅Π· Cython, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы Π½Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

для людСй Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Jupyter Notebooks

Π² ячСйку, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Jupyter это %%time волшСбная ΠΊΠΎΠΌΠ°Π½Π΄Π° для измСрСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния:

Π²Ρ‹Ρ…ΠΎΠ΄
ВрСмя процСссора: ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ 4.54 ms, sys: 0 ns, всСго: 4.54 ms
ВрСмя стСны: 4,12 МБ

это Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ врСмя выполнСния ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ячСйки. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ врСмя выполнСния всСго Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠ° (Ρ‚. Π΅. ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Π½ΠΎΡƒΡ‚Π±ΡƒΠΊ Π² Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΈ Π² Π½ΠΎΠ²ΠΎΠΌ Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ всС ячСйки:

Π²Ρ‹Ρ…ΠΎΠ΄
IPython Ρ‚Π°ΠΉΠΌΠΈΠ½Π³ΠΈ процСссора (ΠΎΡ†Π΅Π½ΠΎΡ‡Π½Ρ‹Π΅): ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ: 0.00 s.
БистСма: 0.00 s.
ВрСмя стСны: 0.00 s.

ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚ metakermit для python 2.7 Π²Π°ΠΌ потрСбуСтся монотонная.

ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Python ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсовмСстимым Π² зависимости ΠΎΡ‚:

Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивным способом являСтся использованиС «ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ роста» ΠΈ Π²Ρ‹ΡƒΡ‡ΠΈΡ‚Π΅ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ «ΠΎ», Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ,https://en.wikipedia.org/wiki/Big_O_notation

Π² любом случаС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ любой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Python Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΡˆΠ°Π³Π°Ρ… подсчСта машин Π² сСкунду, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ этот простой Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ: Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ это ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ

надСюсь, это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ.

я использовал ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для синхронизации части выполнСния ΠΊΠΎΠ΄Π°:

ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ, просто Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠ΄ΠΎΠΌ для измСрСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ синхронизации, Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ послС ΠΊΠΎΠ΄Π° с коммСнтариями, ΠΈ врСмя появится ΠΏΠ΅Ρ€Π΅Π΄ коммСнтариями, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Ρ‚ΠΎΠ³Π΄Π° Π²Ρ‹Ρ…ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Π― Ρ‡ΡƒΠ²ΡΡ‚Π²ΡƒΡŽ сСбя Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ элСгантной Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

timeit β€” Π˜Π·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π°ΒΆ

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄: Lib/timeit.py

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ΒΆ

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки для сравнСния Ρ‚Ρ€Ρ‘Ρ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ:

Π­Ρ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ Π·Π° счёт python интСрфСйса

Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ ΠΈΠ· python интСрфСйса :

Однако timeit() автоматичСски опрСдСляСт количСство ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ использовании интСрфСйса ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹.

Python Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΒΆ

ΠœΠΎΠ΄ΡƒΠ»ΡŒ опрСдСляСт Ρ‚Ρ€ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ класс:

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Timer ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ с ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ, setup ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ timer Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ запуском Π΅Ρ‘ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ timeit() с number Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ. ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ globals ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ пространство ΠΈΠΌΡ‘Π½ для выполнСния ΠΊΠΎΠ΄Π°.

ИзмСнСно Π² вСрсии 3.5: Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ globals.

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Timer ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ с ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ, setup ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ timer Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ запуском Π΅Ρ‘ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ repeat() с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ repeat счётчиком ΠΈ number Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ. ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ globals ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ пространство ΠΈΠΌΡ‘Π½ для выполнСния ΠΊΠΎΠ΄Π°.

ИзмСнСно Π² вСрсии 3.5: Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ globals.

ИзмСнСно Π² вСрсии 3.7: По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ repeat ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ с 3 Π½Π° 5.

ИзмСнСно Π² вСрсии 3.3: time.perf_counter() Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ являСтся Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Класс для Π·Π°ΠΌΠ΅Ρ€ΠΎΠ² скорости выполнСния Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π°.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ для синхронизации, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для настройки ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°. Оба ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ β€” ‘pass’ ; функция Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° зависит ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (см. doc string модуля). stmt ΠΈ setup ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ нСсколько ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ; ΠΈΠ»ΠΈ Π½ΠΎΠ²Ρ‹ΠΌΠΈ строками, Ссли ΠΎΠ½ΠΈ Π½Π΅ содСрТат многострочных строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ². По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² пространствС ΠΈΠΌΡ‘Π½ timeit; этим ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΡƒΡ‚Ρ‘ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ пространства ΠΈΠΌΡ‘Π½ Π² globals.

ВрСмя выполнСния setup ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΈΠ· ΠΎΠ±Ρ‰Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния.

ИзмСнСно Π² вСрсии 3.5: Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ globals.

ВрСмя number Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ основного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°. ΠŸΡ€ΠΈ этом ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ установки выполняСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π° Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ врСмя, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для выполнСния основного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, нСсколько Ρ€Π°Π·, ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎΠ΅ Π² сСкундах ΠΊΠ°ΠΊ float. АргумСнт β€” это число Ρ€Π°Π· Π² Ρ†ΠΈΠΊΠ»Π΅, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π²Π½ΠΎΠ΅ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρƒ. Π“Π»Π°Π²Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ установки ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ функция Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ конструктору.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ timeit() Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ сборщик мусора Π²ΠΎ врСмя синхронизации. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚ нСзависимыС Ρ‚Π°ΠΉΠΌΠΈΠ½Π³ΠΈ Π±ΠΎΠ»Π΅Π΅ сопоставимыми. НСдостатком являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ GC ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ эффСктивности измСряСмой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Если это Ρ‚Π°ΠΊ, GC ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π² setup строкС. НапримСр:

Π­Ρ‚ΠΎ удобная функция, которая Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ timeit() ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‰Π΅Π΅ врСмя >= 0.2 сСкунды, возвращая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ (количСство Ρ†ΠΈΠΊΠ»ΠΎΠ², врСмя, занятоС для этого числа Ρ†ΠΈΠΊΠ»ΠΎΠ²). Она Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ timeit() с Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°ΡŽΡ‰ΠΈΠΌΠΈ числами ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ 1, 2, 5, 10, 20, 50, … ΠΏΠΎΠΊΠ° врСмя Π½Π΅ составит Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 0.2 сСкунды.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π² вСрсии 3.6.

Π’Ρ‹Π·ΠΎΠ² timeit() нСсколько Ρ€Π°Π·.

Π‘ΠΎΠ±Π»Π°Π·Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ срСднСС ΠΈ стандартноС ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΎΡ‚ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΈ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎΠ± этом. Однако это Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ. Π’ Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΌ случаС самоС Π½ΠΈΠ·ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π°Ρ‘Ρ‚ ниТнюю Π³Ρ€Π°Π½ΠΈΡ†Ρƒ для Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ быстро машина ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄; Π±ΠΎΠ»Π΅Π΅ высокиС значСния Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹Π·Π²Π°Π½Ρ‹ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½Ρ‡ΠΈΠ²ΠΎΡΡ‚ΡŒΡŽ скорости Python’а, Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ процСссами, ΠΌΠ΅ΡˆΠ°ΡŽΡ‰ΠΈΠΌΠΈ точности синхронизации. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ min() Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, СдинствСнноС число, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ вас Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ. ПослС этого слСдуСт ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° вСсь Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π΄Ρ€Π°Π²Ρ‹ΠΉ смысл, Π° Π½Π΅ статистику.

ИзмСнСно Π² вСрсии 3.7: Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ repeat ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ с 3 Π½Π° 5.

ΠŸΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ трСйсбэка ΠΈΠ· замСряСмого ΠΊΠΎΠ΄Π°.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки¢

ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ„ΠΎΡ€ΠΌΠ°:

Π”Π°Π»Π΅Π΅ приводится объяснСниС Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠΏΡ†ΠΈΠΉ:

сколько Ρ€Π°Π· Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ β€žstatementβ€œ

сколько Ρ€Π°Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 5)

ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ для выполнСния ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ pass )

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π² вСрсии 3.3.

ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для Π²Ρ‹Π²ΠΎΠ΄Π° Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°; ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ nsec, usec, msec ΠΈΠ»ΠΈ sec

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π² вСрсии 3.5.

ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π·Π°ΠΌΠ΅Ρ€ΠΎΠ²; ΠΏΠΎΠ²Ρ‚ΠΎΡ€ для большСй точности Ρ†ΠΈΡ„Ρ€

Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ сообщСниС ΠΎΠ± использовании ΠΈ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π•ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы, связанныС с Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° pass. Π—Π΄Π΅ΡΡŒ ΠΊΠΎΠ΄ Π½Π΅ пытаСтся ΡΠΊΡ€Ρ‹Ρ‚ΡŒ, Π½ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ ΠΎΠ± этом. Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΈΠ·Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½Ρ‹ ΠΏΡƒΡ‚Ρ‘ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΈ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Python вСрсиями.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ΒΆ

МоТно ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ настройки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² Π½Π°Ρ‡Π°Π»Π΅:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π°ΠΉΠΌΠΈΠ½Π³Π° Python: Ρ‚Ρ€ΠΈ способа ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ваш ΠΊΠΎΠ΄

python Π·Π°ΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния участка ΠΊΠΎΠ΄Π°. clock 20210529181827389536. python Π·Π°ΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния участка ΠΊΠΎΠ΄Π° Ρ„ΠΎΡ‚ΠΎ. python Π·Π°ΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния участка ΠΊΠΎΠ΄Π°-clock 20210529181827389536. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° python Π·Π°ΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния участка ΠΊΠΎΠ΄Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° clock 20210529181827389536. Π•ΡΡ‚ΡŒ ΠΊΠΎΠ΄ с трСмя сотрировками, Π΅ΡΡ‚ΡŒ ΠΎΡ‚Ρ‡Π΅Ρ‚ ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Как ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΠ΅Ρ‡ΡŒ врСмя выполнСния ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ суммарноС врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π•Ρ‰Π΅, Ссли Π½Π΅ слоТно, посовСтуйтС ΠΊΠ°ΠΊ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Π₯отя ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΈΠ·Π½Π°ΡŽΡ‚ Python эффСктивным языком программирования, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° чистом Python ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ ΠΈΡ… Π°Π½Π°Π»ΠΎΠ³ΠΈ Π½Π° скомпилированных языках, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ C, Rust ΠΈ Java. Π’ этом руководствС Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹ Python для отслСТивания скорости выполнСния Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ:

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ знания ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ классы, контСкстныС ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹ ΠΈ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Ρ‹. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, Π²Ρ‹ смоТСтС ΠΏΠΎ ТСланию ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ»ΠΈ нСсколько ΠΈΠ· Π½ΠΈΡ… Π² своСм ΠΊΠΎΠ΄Π΅, ΠΊΠ°ΠΊ для Π·Π°ΠΌΠ΅Ρ€Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΊΠΎΠ΄Π°, Ρ‚Π°ΠΊ ΠΈ для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ содСрТит свои прСимущСства, ΠΈ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² зависимости ΠΎΡ‚ ситуации. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ!

Π’Π°ΠΉΠΌΠ΅Ρ€Ρ‹ Python

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΎΡΠ½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° протяТСнии всСго ΡƒΡ€ΠΎΠΊΠ°. ПозТС Π²Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Π² этот ΠΊΠΎΠ΄ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Python, для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π΅Π³ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· самых простых способов измСрСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния этого ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Python

Если Π²Ρ‹ посмотритС Π½Π° встроСнный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ time Π² Python, Ρ‚ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Ρ€ΡΡ‚ΡŒ врСмя:

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Π² долях сСкунд) счСтчика ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ часов с самым высоким доступным Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ для измСрСния ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ perf_counter() для создания Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Python. ПозТС Π²Ρ‹ сравнитС это с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ функциями Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Python ΠΈ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ perf_counter() ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ являСтся Π»ΡƒΡ‡ΡˆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ

Π§Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы добавлСния Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Python ΠΊ своСму ΠΊΠΎΠ΄Ρƒ, Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Python ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ ΠΊΠΎΠ΄Π° Π² этом руководствС. Если Ρƒ вас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ, смСло слСдуйтС этим ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌ.

ВычислСниС n-Π³ΠΎ числа ряда Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° while:

Π’Π°Ρˆ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Python

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Python ΠΊ ΠΊΠΎΠ΄Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ perf_counter() вызываСтся ΠΊΠ°ΠΊ Π΄ΠΎ, Ρ‚Π°ΠΊ ΠΈ послС вычислСния значСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π—Π°Ρ‚Π΅ΠΌ пСчатаСтся врСмя, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для вычислСния, вычисляя Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ.

f-строки доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Python 3.6 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ… вСрсиях. Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ Python 3.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ запуститС ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΠΎΡ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ врСмя Π½Π° вычислСния:

Π’Ρ‹ рассмотрСли основы Ρ‚Π°ΠΉΠΌΠΈΠ½Π³Π° своСго ΠΊΠΎΠ΄Π° Python. Π’ ΠΎΡΡ‚Π°Π²ΡˆΠ΅ΠΉΡΡ части руководства Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ΡŒ Python-Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Π² класс, ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ контСкста ΠΈ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ консистСнтным ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ Π² использовании.

Python класс Timer

Π’ этом руководствС Π²Ρ‹ создадитС ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ класс Timer, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для опрСдСлСния Ρ‚Π°ΠΉΠΌΠΈΠ½Π³ΠΎΠ² ΠΊΠΎΠ΄Π° нСсколькими Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами. ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Ρ‚Π°ΠΊΠΆΠ΅ доступСн Π² PyPI ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ codetiming. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π² Π²Π°ΡˆΡƒ систСму ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ПониманиС классов в Python

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ класса Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Python

Π—Π΄Π΅ΡΡŒ происходит нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ, поэтому Π΄Π°Π²Π°ΠΉΡ‚Π΅ пройдСмся ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ шаг Π·Π° шагом.

ИспользованиС класса Timer :

Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ это с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ, Π³Π΄Π΅ Π²Ρ‹ использовали perf_counter() Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΊΠΎΠ΄Π° довольно ΠΏΠΎΡ…ΠΎΠΆΠ°, Π½ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΠ΄ стал Π±ΠΎΠ»Π΅Π΅ понятным, ΠΈ это являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· прСимущСств использования классов. Π’Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ выбирая ΠΈΠΌΠ΅Π½Π° классов, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΊΠΎΠ΄ ΠΎΡ‡Π΅Π½ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ!

ИспользованиС класса Timer Python

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Ρ€Π°Π½Π΅Π΅. Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Timer заботится ΠΎ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠ΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° консоль, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π»ΠΎΠ³Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Когда Π²Ρ‹ запуститС ΠΊΠΎΠ΄, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Π²Ρ‹Π²ΠΎΠ΄:

ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠ΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΠ· Timer ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ, Π½ΠΎ, ΠΏΠΎΡ…ΠΎΠΆΠ΅, этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Π³ΠΈΠ±ΠΊΠΈΠΉ. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ свой класс.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ большСго удобства ΠΈ гибкости

Π”ΠΎ сих ΠΏΠΎΡ€ Π²Ρ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎ классы подходят для случаСв, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ состояниС ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ согласованноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² вашСм ΠΊΠΎΠ΄Π΅. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ большС удобств ΠΈ гибкости Π²Π°ΡˆΠ΅ΠΌΡƒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ Python:

ПослС обновлСния timer.py Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ тСкст ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π’ΠΎΡ‚ Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² дСйствии:

Когда Π²Ρ‹ запускаСтС эти ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅, Python автоматичСски ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Одна тонкая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с этим ΠΊΠΎΠ΄ΠΎΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ измСряСтС Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ врСмя, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для вычислСния элСмСнта ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π½ΠΎ ΠΈ врСмя, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Python Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ Π½Π° ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π½Π° экран. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Ρ‚Π°ΠΊ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ врСмя, ΠΏΠΎΡ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ Π½Π° ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ, ΠΏΠΎΡ‚Ρ€Π°Ρ‡Π΅Π½Π½Ρ‹ΠΌ Π½Π° вычислСния. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ врСмя.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ класса ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ доступны Π»ΠΈΠ±ΠΎ нСпосрСдствСнно Π² классС, Π»ΠΈΠ±ΠΎ Ρ‡Π΅Ρ€Π΅Π· экзСмпляр класса:

Π’ ΠΎΠ±ΠΎΠΈΡ… случаях ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ пустой ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ классов.

Π—Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ Python. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ имя для Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ вСрнёмся ΠΊ series_numbers.py ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ измСряСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ врСмя, ΠΏΠΎΡ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ Π½Π° вычислСния:

ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ запуск сцСнария даст Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΊΠ°ΠΊ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, хотя сСйчас измСряСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ фактичСскоС врСмя вычислСний:

ПослСдняя строка являСтся способом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Python прСдставляСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π₯отя Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡ‡Π΅Ρ€ΠΏΠ½ΡƒΡ‚ΡŒ ΠΈΠ· Π½Π΅Π³ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΎΠ½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Π°. ВмСсто этого Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊ имя Timer ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΠ±Ρ‰Π°Ρ‚ΡŒ ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π’ Python 3.7 классы Π΄Π°Π½Π½Ρ‹Ρ… Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. Они ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ нСсколько удобств для Π²Π°ΡˆΠΈΡ… классов, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΡƒΡŽ строку прСдставлСния.

Π’ΠΎΡ‚ нСсколько Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ ΠΎ классС Π΄Π°Π½Π½Ρ‹Ρ… Timer :

Новый класс Π΄Π°Π½Π½Ρ‹Ρ… Timer Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ваш ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ класс, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ прСдставлСниС:

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ этот Ρ€Π°Π·Π΄Π΅Π», Π΄Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° ΠΏΠΎΠ»Π½Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ Timer Π² Π΅Π³ΠΎ Π½Ρ‹Π½Π΅ΡˆΠ½Π΅ΠΌ Π²ΠΈΠ΄Π΅. Π’Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ подсказок Ρ‚ΠΈΠΏΠ° ΠΊ ΠΊΠΎΠ΄Ρƒ для Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ:

ИспользованиС класса для создания Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°, Python ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ нСсколько прСимущСств:

Класс ΠΎΡ‡Π΅Π½ΡŒ Π³ΠΈΠ±ΠΊΠΈΠΉ, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ практичСски Π² любой ситуации, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ врСмя, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для выполнСния ΠΊΠΎΠ΄Π°. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΎΠ± использовании ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ² контСкста ΠΈ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ для Π·Π°ΠΌΠ΅Ρ€ΠΎΠ² Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π° ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ контСкста Python Timer

Python класс Timer ΠΏΡ€ΠΎΡˆΠ΅Π» Π΄ΠΎΠ»Π³ΠΈΠΉ ΠΏΡƒΡ‚ΡŒ! По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ созданным Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠΌ Python ΠΊΠΎΠ΄ стал достаточно ΠΌΠΎΡ‰Π½Ρ‹ΠΌ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, для использования Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° всС Π΅Ρ‰Π΅ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ стандартного ΠΊΠΎΠ΄Π°:

ПониманиС контСкстных ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ² Π² Python

ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹ контСкста Π±Ρ‹Π»ΠΈ Ρ‡Π°ΡΡ‚ΡŒΡŽ Python Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»Π³ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Они Π±Ρ‹Π»ΠΈ прСдставлСны PEP 343 Π² 2005 Π³ΠΎΠ΄Ρƒ ΠΈ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² Python 2.5. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ контСкстныС ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹ Π² ΠΊΠΎΠ΄Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова with :

НаиболСС распространСнноС использованиС контСкстных ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ², вСроятно, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… рСсурсов, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ„Π°ΠΉΠ»Ρ‹, Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ соСдинСния с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…. Π—Π°Ρ‚Π΅ΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ контСкста ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для освобоТдСния ΠΈ очистки рСсурса послС Π΅Π³ΠΎ использования. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ раскрываСтся Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ структура timer.py ΠΏΡƒΡ‚Π΅ΠΌ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ строк, содСрТащих Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅. Π§Ρ‚ΠΎ Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ, ΠΎΠ½ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΈΠ΄ΠΈΠΎΠΌΡƒ для открытия Ρ„Π°ΠΉΠ»Π° Π² Python:

Π§Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ fp являСтся контСкстным ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ? ВСхничСски это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ fp Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° контСкста. Π’ основС языка Python Π»Π΅ΠΆΠΈΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ². Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π΅ ΠΊΠ°ΠΊ ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ваш ΠΊΠΎΠ΄.

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° контСкста состоит ΠΈΠ· Π΄Π²ΡƒΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²:

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Β«See you later, RascalΒ» пСчатаСтся, Π΄Π°ΠΆΠ΅ Ссли Π² ΠΊΠΎΠ΄Π΅ Π΅ΡΡ‚ΡŒ ошибка.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкстныС ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹ ΠΈ ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой собствСнный. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ Π³Π»ΡƒΠ±ΠΆΠ΅, Ρ‚ΠΎ посмотритС contextlib Π² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅. Он Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ способы опрСдСлСния Π½ΠΎΠ²Ρ‹Ρ… контСкстных ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ контСкстныС ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для закрытия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², устранСния ошибок ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ бСздСйствия!

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° контСкста Python Timer

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ Π΄Π²Π΅ Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ Π΄Π΅Ρ‚Π°Π»ΠΈ:

ИспользованиС ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° контСкста Python Timer

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ контСкста Timer для опрСдСлСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ вычислСния числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ. ВспомнитС, ΠΊΠ°ΠΊ Π²Ρ‹ использовали Timer Ρ€Π°Π½Π΅Π΅:

Запуск скрипта Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π°Ρ‚ΡŒ Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Π•ΡΡ‚ΡŒ нСсколько прСимущСств для добавлСния возмоТностСй ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° контСкста ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ классу Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Python:

Python Timer Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€

Π’Π°Ρˆ класс Timer Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡ‡Π΅Π½ΡŒ унивСрсалСн. Однако Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования, Π³Π΄Π΅ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ упорядочСнным. Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ врСмя, ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠΉ Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² вашСй ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ контСкстный ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€, Ρƒ вас Π΅ΡΡ‚ΡŒ Π΄Π²Π° основных Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°:

1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Timer ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

Если Π²Ρ‹ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚Π΅ do_something() Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… мСстах, это станСт Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΎ ΠΈ слоТно Π² обслуТивании.

2. ΠžΠ±Π΅Ρ€Π½Ρ‘ΠΌ ΠΊΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ содСрТащСй Π²Π½ΡƒΡ‚Ρ€ΠΈ контСкстный ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€:

ПониманиС Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² Python

Π’ качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° создадим Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚:

ВмСсто этого create_multiplier() ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ умноТСния, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… основана Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠΌ factor :

Π‘ΠΈΠΌΠ²ΠΎΠ» @ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для примСнСния Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΎΠ². Π’ этом случаС @triple ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ triple() примСняСтся ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ сразу послС Π½Π΅Π΅.

Иногда Π΄Π΅ΠΊΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅. @functools.wraps ΠΈΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ:

Π‘ Π½ΠΎΠ²Ρ‹ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ @triple ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ knock() Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ сохраняСт своС собствСнноС имя, Π΄Π°ΠΆΠ΅ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±Ρ‹Π» Π΄Π΅ΠΊΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½. Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ Ρ„ΠΎΡ€ΠΌΠ°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ @functools.wraps всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ опрСдСляСтС Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€. Π‘Ρ…Π΅ΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π²Π°ΡˆΠΈΡ… Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΎΠ², выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π° Timer Python

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ свой Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Python, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² качСствС Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π°. Однако Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ упраТнСния Π΄Π°Π²Π°ΠΉΡ‚Π΅ создадим Python Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ Timer с нуля.

ΠžΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ схСмС, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π΄ΠΎ ΠΈ послС Π²Ρ‹Π·ΠΎΠ²Π° Π΄Π΅ΠΊΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π­Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° сообраТСния ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΈΠ· контСкстного ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°. Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Python ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Π΄Π΅ΠΊΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Python послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π²Ρ‹Π·ΠΎΠ²Π°. Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ @timer ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, насколько wrapper_timer() Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Ρ€Π°Π½Π½ΠΈΠΉ шаблон, установлСнный Π²Π°ΠΌΠΈ для Π·Π°ΠΌΠ΅Ρ€ΠΎΠ² ΠΊΠΎΠ΄Π° Python. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ @timer ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Напомним, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ ΠΊ Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ @ примСняСтся ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π² этих случаях Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ. Одно ΠΈΠ· прСимущСств использования Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΈ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ врСмя выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

@timer Π΄Π΅Π»Π°Π΅Ρ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ смыслС Π²Ρ‹ Π²Π΅Ρ€Π½ΡƒΠ»ΠΈΡΡŒ ΠΊ исходной Ρ‚ΠΎΡ‡ΠΊΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ @timer Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΈΠ»ΠΈ удобством Timer. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ свой класс Timer Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€?

Π—Π΄Π΅ΡΡŒ square-это экзСмпляр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ числа, Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ функция square() Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ возмоТности Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π° ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ классу Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Timer Π² качСствС Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π°:

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ этот Ρ€Π°Π·Π΄Π΅Π», Π·Π½Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ простой способ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ваш Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Python Π² Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€. Π’Ρ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сходства ΠΌΠ΅ΠΆΠ΄Ρƒ контСкстными ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°ΠΌΠΈ ΠΈ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ. Они ΠΎΠ±Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для выполнСния Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π΄ΠΎ ΠΈ послС выполнСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

ИспользованиС Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π° Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Python

Если Π²Ρ‹ сравнитС эту Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ с ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‚ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ СдинствСнными различиями ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠΌΠΏΠΎΡ€Ρ‚ Timer Π² строкС 3 ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ @Timer() Π² строкС 6. БущСствСнным прСимущСством использования Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΎΠ² являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ просты Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ, ΠΊΠ°ΠΊ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ относится ΠΊΠΎ всСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ваш ΠΊΠΎΠ΄ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ врСмя, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Π”Π°Π²Π°ΠΉΡ‚Π΅ запустим сцСнарий Π² послСдний Ρ€Π°Π·:

РасполоТСниС Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠ΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ являСтся ΠΏΡ€Π΅Π΄Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ваш ΠΊΠΎΠ΄ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ врСмя, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Как Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ здСсь, ваш ΠΊΠΎΠ΄ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠ΅Π΅ врСмя послС вычислСний.

ΠŸΡ€ΠΈ использовании Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Π² качСствС Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π° Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ‚Π΅ ΠΆΠ΅ прСимущСства, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΈ использовании контСкстных ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ²:

Однако Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Ρ‹ Π½Π΅ Ρ‚Π°ΠΊ Π³ΠΈΠ±ΠΊΠΈ, ΠΊΠ°ΠΊ контСкстныС ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. МоТно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΊ ΡƒΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ функциям, Π½ΠΎ это Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΡƒΠΊΠ»ΡŽΠΆΠ΅ ΠΈ ΠΌΠ΅Π½Π΅Π΅ распространСно.

Код Timer Python

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, сохранив Π΅Π³ΠΎ Π² Ρ„Π°ΠΉΠ»Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ timer.py ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Запустим Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Π² качСствС ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° контСкста:

Π­Ρ‚ΠΎΡ‚ Π²ΠΈΠ΄ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Python Π² основном ΠΏΠΎΠ»Π΅Π·Π΅Π½ для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ваш ΠΊΠΎΠ΄ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свой ΠΊΠΎΠ΄.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹ Π² Python

БущСствуСт мноТСство Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π·Π°ΠΌΠ΅Ρ€ΠΎΠ² выполнСния вашСго ΠΊΠΎΠ΄Π° Python. Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π³ΠΈΠ±ΠΊΠΈΠΉ ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколькими Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами. Быстрый поиск ΠΏΠΎ PyPI ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ сущСствуСт мноТСство ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚Π°ΠΉΠΌΠΈΠ½Π³Π° Python.

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Ρ‹ сначала ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ большС ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… функциях, доступных Π² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ для измСрСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ perf_counter() ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ вашСго ΠΊΠΎΠ΄Π°, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚.

ИспользованиС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ² Π² Python

Π’Ρ‹ использовали perf_counter() Π½Π° протяТСнии всСго этого ΡƒΡ€ΠΎΠΊΠ° для выполнСния фактичСских ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° time Python поставляСтся с нСсколькими Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ функциями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Ρ€ΡΡŽΡ‚ врСмя. Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹:

Одна ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΏΠΎΡ‡Π΅ΠΌΡƒ сущСствуСт нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Python прСдставляСт врСмя ΠΊΠ°ΠΊ float. Числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой ΠΏΠΎ своСй ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅ Π½Π΅Ρ‚ΠΎΡ‡Π½Ρ‹. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π½ΡŒΡˆΠ΅:

Float Python слСдуСт стандарту IEEE 754 для Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠΈ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пытаСтся ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ всС числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой Π² 64 Π±ΠΈΡ‚Π°Ρ…. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сущСствуСт бСсконСчно ΠΌΠ½ΠΎΠ³ΠΎ чисСл с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΈΡ… Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ числа Π±ΠΈΡ‚ΠΎΠ².

IEEE 754 прСдписываСт систСму, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ»ΠΎΡ‚Π½ΠΎΡΡ‚ΡŒ чисСл, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, измСняСтся. Π§Π΅ΠΌ Π±Π»ΠΈΠΆΠ΅ Π²Ρ‹ ΠΊ 1, Ρ‚Π΅ΠΌ большС чисСл Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ. Для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… чисСл Π΅ΡΡ‚ΡŒ большС пространства ΠΌΠ΅ΠΆΠ΄Ρƒ числами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ. Π­Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ послСдствия, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ float для прСдставлСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π—Π΄Π΅ΡΡŒ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ наносСкундного числа Π½Π° самом Π΄Π΅Π»Π΅ влияСт Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ perf_counter() ΡƒΠΆΠ΅ обСспСчиваСт наносСкундноС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Ρƒ использования perf_counter() мСньшС прСимущСств.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: perf_counter_ns() доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Python 3.7 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ… вСрсиях. Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ Π²Ρ‹ использовали perf_counter() Π² своСм классС Timer. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‚Π°ΠΉΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π² Π±ΠΎΠ»Π΅Π΅ старых вСрсиях Python. Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ функциях _ns Π² time ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с Π½ΠΎΠ²Ρ‹ΠΌΠΈ классными функциями Π² Python 3.7.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Π² вашСй систСмС.

PIP 418 описываСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ обоснования ввСдСния этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Она Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠ΅ описания:

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это Π»ΡƒΡ‡ΡˆΠΈΠΉ Π²Ρ‹Π±ΠΎΡ€ для вас, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ perf_counter() для вашСго Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Python.

ΠžΡ†Π΅Π½ΠΊΠ° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ timeit

Допустим, Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΆΠ°Ρ‚ΡŒ ΠΈΠ· ΠΊΠΎΠ΄Π° послСдний Π±ΠΈΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ Π·Π°Π΄Π°Π΅Ρ‚Π΅ΡΡŒ вопросом ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивном способС прСобразования списка Π² мноТСство. Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ, использованиС set() ΠΈ Π»ΠΈΡ‚Π΅Ρ€Π°Π» мноТСства <. >. Для этого Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свой Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Python:

Π­Ρ‚ΠΎΡ‚ тСст, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π»ΠΈΡ‚Π΅Ρ€Π°Π» мноТСства ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ быстрСС. Однако эти Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ довольно Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅, ΠΈ Ссли Π²Ρ‹ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ запуститС ΠΊΠΎΠ΄, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹. Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΏΡ€ΠΎΠ±ΡƒΠ΅Ρ‚Π΅ ΠΊΠΎΠ΄. НапримСр, Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΠΎΠ²Π΅Π·Ρ‚ΠΈ, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сцСнарий ΠΊΠ°ΠΊ Ρ€Π°Π· Π² Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° ваш ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ занят Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ.

Π›ΡƒΡ‡ΡˆΠ΅ всСго Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ. Она ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ ΠΈΠΌΠ΅Π½Π½ΠΎ для измСрСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π°. Для этого ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ timeit.timeit() ΠΈΠ· Python ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² интСрфСйсС ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ эти Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π±ΡƒΠ΄ΡŒΡ‚Π΅ остороТны, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ timeit Π½Π° ΠΊΠΎΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΠ½ автоматичСски Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ нСсколько Ρ€Π°Π·, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ Π·Π°ΡΠΏΠ°ΠΌΠΈΡ‚ΡŒ сСрвСр запросами!

НаконСц, интСрактивная ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° IPython ΠΈ Jupyter notebook ΠΈΠΌΠ΅ΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ %timeit magic :

ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, измСрСния ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ использованиС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π° мноТСства происходит быстрСС.

Поиск ΡƒΠ·ΠΊΠΈΡ… мСст Π² ΠΊΠΎΠ΄Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ профилирования

timeit ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈΠ½Π³Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π°. Однако Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ всСх частСй вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ опрСдСлСния Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ большС всСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ВмСсто этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ.

Π­Ρ‚ΠΎΡ‚ Π²Ρ‹Π²ΠΎΠ΄ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‰Π΅Π΅ врСмя выполнСния составило 0.002 сСкунды. Π’ Π½Π΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ пСрСчислСны Π΄Π΅ΡΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ваш ΠΊΠΎΠ΄ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ» Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ своСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π—Π΄Π΅ΡΡŒ Π²Ρ‹ отсортированы ΠΏΠΎ кумулятивному Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (cumtime), Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ваш ΠΊΠΎΠ΄ считаСт врСмя, ΠΊΠΎΠ³Π΄Π° данная функция Π²Ρ‹Π·Π²Π°Π»Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Π‘Ρ‚ΠΎΠ»Π±Π΅Ρ† ΠΎΠ±Ρ‰Π΅Π΅ врСмя (tottime) ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, сколько Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ваш ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ²Π΅Π» Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ врСмя Π² подфункциях. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ Π½Π° это Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ, Π³Π΄Π΅ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ²Π΅Π» Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ своСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ sort :

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ статистику, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, Π³Π΄Π΅ ваш ΠΊΠΎΠ΄ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ своСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, смоТСтС Π»ΠΈ Π²Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ ΡƒΠ·ΠΊΠΈΠ΅ мСста, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот инструмСнт, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ структуру вашСго ΠΊΠΎΠ΄Π°. НапримСр, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΎΠΊΠ°ΠΆΡƒΡ‚ Π²Π°ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ.

Для получСния Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½ΠΎΠ³ΠΎ интСрфСйса для Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ… профиля, запуститС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ KCacheGrind. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ свой собствСнный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· профиля с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pyprof2calltree :

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти вашСго ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ руководства. Однако Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° memory-profiler, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти вашими ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ line_profiler Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ добавляСт ΠΈΠ·Ρ€ΡΠ΄Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов ΠΊ вашСй срСдС выполнСния. Π‘ΠΎΠ»Π΅Π΅ стандартный Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сначала ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ cProfile для опрСдСлСния Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Π° Π·Π°Ρ‚Π΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ line_profiler для этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. line_profiler Π½Π΅ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, поэтому Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ сначала ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ инструкциям ΠΏΠΎ установкС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ.

ΠŸΠ΅Ρ€Π΅Π΄ запуском ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅ΠΌΡƒ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ слСдуСт ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ выполняСтся, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π° @profile Π² свой исходный ΠΊΠΎΠ΄. НапримСр, для профилирования Timer.stop() Π²Ρ‹ добавляСтС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π² timer.py :

Π’Ρ‹Π²ΠΎΠ΄

Π’ этом руководствС Π²Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ добавлСнию Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Python Π² свой ΠΊΠΎΠ΄:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Timer Python Π² свой собствСнный ΠΊΠΎΠ΄! ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ скорости выполнСния вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΆΡƒΡ€Π½Π°Π»Π°Ρ… ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ваши сцСнарии.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *