list
Отображает текущее место в файле
h(elp)
Отображает список команд или справку по конкретной команде
q(uit)
Выход из отладчика и программы
c(ontinue)
Выход из отладчика, продолжение выполнения программы
n(ext)
Переход к следующему шагу программы
<enter>
Повтор предыдущей команды
p(rint)
Вывод значений переменных
s(tep)
Вход в подпрограмму
r(eturn)
Возврат из подпрограммы
Отображает текущее место в файле
h(elp)
Отображает список команд или справку по конкретной команде
q(uit)
Выход из отладчика и программы
c(ontinue)
Выход из отладчика, продолжение выполнения программы
n(ext)
Переход к следующему шагу программы
<enter>
Повтор предыдущей команды
p(rint)
Вывод значений переменных
s(tep)
Вход в подпрограмму
r(eturn)
Возврат из подпрограммы
Дональд Кнут: «Лучше не держать в голове подобные “малые” вопросы производительности, скажем, 97 % времени: преждевременная оптимизация — корень всех зол»
%time — длительность выполнения отдельного оператора;
%timeit — длительность выполнения отдельного оператора при неоднократном повторе, для большей точности;
%prun — выполнение кода с использованием профилировщика;
%lprun — пошаговое выполнение кода с применением профилировщика;
%memit — оценка использования оперативной памяти для отдельного оператора;
%mprun — пошаговое выполнение кода с применением профилировщика памяти.
%timeit — длительность выполнения отдельного оператора при неоднократном повторе, для большей точности;
%prun — выполнение кода с использованием профилировщика;
%lprun — пошаговое выполнение кода с применением профилировщика;
%memit — оценка использования оперативной памяти для отдельного оператора;
%mprun — пошаговое выполнение кода с применением профилировщика памяти.
Профилирование
def sum_of_lists(N):
total = 0
for i in range(5):
L = [j ^ (j >> i) for j in range(N)]
total += sum(L)
return total
%prun sum_of_lists(1000000)
14 function calls in 1.089 seconds
Ordered by: internal time
ncalls tottime percall cumtime percall filename:lineno(function)
5 0.817 0.163 0.817 0.163 <ipython-input-1-f105717832a2>:4(<listcomp>)
5 0.220 0.044 0.220 0.044 {built-in method builtins.sum}
1 0.040 0.040 1.077 1.077 <ipython-input-1-f105717832a2>:1(sum_of_lists)
1 0.012 0.012 1.089 1.089 <string>:1(<module>)
1 0.000 0.000 1.089 1.089 {built-in method builtins.exec}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
def sum_of_lists(N):
total = 0
for i in range(5):
L = [j ^ (j >> i) for j in range(N)]
total += sum(L)
return total
%prun sum_of_lists(1000000)
14 function calls in 1.089 seconds
Ordered by: internal time
ncalls tottime percall cumtime percall filename:lineno(function)
5 0.817 0.163 0.817 0.163 <ipython-input-1-f105717832a2>:4(<listcomp>)
5 0.220 0.044 0.220 0.044 {built-in method builtins.sum}
1 0.040 0.040 1.077 1.077 <ipython-input-1-f105717832a2>:1(sum_of_lists)
1 0.012 0.012 1.089 1.089 <string>:1(<module>)
1 0.000 0.000 1.089 1.089 {built-in method builtins.exec}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
Forwarded from NOP::Nuances of Programming
Многогранность языка python делает его крайне популярным среди разработчиков.
В данной статье автор делается подборкой полезных хитростей и приемов, которые смогут упростить процесс написания кода
https://nuancesprog.ru/p/1680/
@nuancesprog #статьи #Python #SoftwareDevelopment #Learning
В данной статье автор делается подборкой полезных хитростей и приемов, которые смогут упростить процесс написания кода
https://nuancesprog.ru/p/1680/
@nuancesprog #статьи #Python #SoftwareDevelopment #Learning
Nuances of programming
Полезные хитрости на Python от А до Я
Python — это один из самых популярных и востребованных языков программирования в мире. И на то есть множество причин
Django templates access to tuples:
{{ t.0.0 }} is like t[0][0] in Python code
{% for option in options %}
<option value="{{ option.0 }}" >{{ option.1 }}</option>
{% endfor %}
{{ t.0.0 }} is like t[0][0] in Python code
{% for option in options %}
<option value="{{ option.0 }}" >{{ option.1 }}</option>
{% endfor %}
Текущий стек вызовов
import traceback
for line in traceback.format_stack():
print(line.strip())
import traceback
for line in traceback.format_stack():
print(line.strip())
from concurrent.futures import ProcessPoolExecutor
import concurrent.futures
URLS = [ ... ]
def parse(url):
# our logic for parsing the page
return data # still probably a dict
with ProcessPoolExecutor(max_workers=4) as executor:
future_results = {executor.submit(parse, url): url for url in URLS}
results = []
for future in concurrent.futures.as_completed(future_results):
results.append(future.result())
import concurrent.futures
URLS = [ ... ]
def parse(url):
# our logic for parsing the page
return data # still probably a dict
with ProcessPoolExecutor(max_workers=4) as executor:
future_results = {executor.submit(parse, url): url for url in URLS}
results = []
for future in concurrent.futures.as_completed(future_results):
results.append(future.result())
# Это включит автодополнение в консольном режиме python
import rlcompleter
import readline
readline.parse_and_bind("tab: complete")
Как не делать это каждый раз
В файл ~/.pyrc положить:
import rlcompleter
import readline
readline.parse_and_bind("tab: complete")
В ~/.bashrc добавить:
export PYTHONSTARTUP="${HOME}/.pyrc"
export PYTHONIOENCODING="UTF-8"
И, чтобы применить изменение прямо сейчас без перезапуска консоли, выполнить:
source ~/.bashrc
import rlcompleter
import readline
readline.parse_and_bind("tab: complete")
Как не делать это каждый раз
В файл ~/.pyrc положить:
import rlcompleter
import readline
readline.parse_and_bind("tab: complete")
В ~/.bashrc добавить:
export PYTHONSTARTUP="${HOME}/.pyrc"
export PYTHONIOENCODING="UTF-8"
И, чтобы применить изменение прямо сейчас без перезапуска консоли, выполнить:
source ~/.bashrc