3 строчка code так и должно быть?
ну да Чтобы например сделать так measure(w(12,"\n"))
Это число означает 9.5367*10^-7
там (ххххххххххххххххх)
def mesure(f, *args, **kwargs): start = ... res = f(*args, **kwargs) print(...) return res mesure(w, 12, "\n")
Что это такое вообще и главное зачем?)
Это то что тебе нужно.
не работает
как это будет измерять время?
А что не так с маленькими значениями?
Почему неправильные? Ты в функцию передаешь None и зачем-то делаешь просто code
Решил Я что-то в шоке, что ни один из осуждающих меня профессоров Гарврада не знал решения 😂😂😂
Ой, не то. Еще выше сообщение
Надеюсь осуждающие меня станут умнее. Делюсь с вами, дорогие мои
время затер случайно, но не суть
from functools import partial import time def timer(func): def wrapper(*args, **kwargs): start = time.monotonic() func(*args, **kwargs) end = time.monotonic() print("EXEC. TIME: {}".format(end - start)) return wrapper @timer def measure(code): code() def add(b, x): time.sleep(2) return b + x measure(partial(add, 1, 2))
о, великий питонист! а теперь объясни, что будет, если в measure вставить measure?
что это за хрень такая?
А можно не так больно, пожалуйста? Я же человек всего лишь, а не программист
А в чем проблема?)
в том что это не работает
Зачем в в measure вставлять measure?)))
так оно же не работает
Почему у меня работает?) Да, случайно затер 1
а зачем было создавать measure в первую очередь?
возможно ты принимаешь желаемое за действительное
а где ты видишь боль? Код чистый и понятный, хз...
ну и? этот код вс еравно не работает так как ты ожидаешь
Ну смотри, я хочу в аргументах measure() измерять любой код
(он args и kwargs боится)
Почему не работает как я ожидаю?
Python 3.8.3 (default, May 17 2020, 18:15:42) [GCC 10.1.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> def measure(code): ... start = time.monotonic() ... code ... print(time.monotonic()-start) ... >>> import time >>> measure(time.sleep(1)) 2.1923333406448364e-06 <------!!!! >>> measure(time.sleep(2)) 1.8528662621974945e-06
а в чем проблема в мою функцию что то вкинуть?
аргс юзаю, но нафига оно мне тут?)
и что? код не работает
вот это работает корректно
декоратор на максималках
А что ты ожидаешь в принте?
потому что ты измеряешь время получения значения имени code
Чем не то?
как не то, он запустил твой же код
Блин, я понимаю, ты способный, но иногда не нужно спорить, а пытаться понять собеседника
мы тут всем чатом пытаемся понять, зачем это делать, код не хуй, мерять не надо
Ладно, и правда не то
все так и задуманно
Хуй всё-таки на каком-то этапе жизни померить надо
ну я это и сказал)
Понимаешь, ты даже свой код не можешь проверить
TypeError: 'NoneType' object is not callable Что measure(time.sleep(1)) Что measure(partial(time.sleep(1)))
похоже тебе стоит все таки уже выучить разницу между получением ссылки на функцию и ее вызовом
почитай про partial, и прочитай как я передовал аргументы
Фигня какая-то Проще уже тогда start = time.monotonic() time.sleep(1) p(time.monotonic() - start)
проще немного почитать про timeit, и посмотреть туториалы может
Но это тоже много кода. Хочется покороче
Почмокай леденец ❤️
timeit может замерить время выполнения с меньшим кол-вом кода чем тут?) https://t.me/ru_python/1346135
Напиши свой язык, в котором будет встроенный оператор измерения времени.
Таймит вызывается с помощью CLI
Дай мне пару дней
Мне из питона нужно
А причем тогда таймит?
Да хоть целый год, если это поможет тебе не писать в чат.
Проехали
А что у питона есть для реализации своих операторов (вспомнился goto)?
Бл. >>> from functools import wraps >>> import time >>> def timeit(f): ... @wraps(f) ... def timed(*args, **kw): ... tstart = time.monotonic() ... output = f(*args, **kw) ... tend = time.monotonic() ... print(f"'{f.__name__}' executed in {tend-tstart:.6f}s") ... return output ... return timed ... >>> @timeit ... def sleep(n): ... time.sleep(n) ... return "wakeup" ... >>> sleep(1) 'sleep' executed in 1.001066s 'wakeup' >>> Ну куда уже проще то?
Как куда? Нафига мне функцию которую я хочу измерить еще определять?
>>> time.sleep(1) >>> time.sleep = timeit(time.sleep) >>> time.sleep(1) sleep executed in 1.001044s Хотя это фу, лучше уж так: >>> t = timeit(time.sleep) >>> t(1) sleep executed in 1.001045s
ну да, это коротко, но все равно не то. Неужели нельзя как-то короче и чище?
>>> timeit(time.sleep)(1) sleep executed in 1.001042s
Не понял прикол. Тут нужно переписывать еще то, что измеряешь
и вообще как это может работть sleep() takes exactly one argument (0 given)
И определять функцию которую я хочу замерить? не, пасиба
хахахахахаахахахахаахха
просто аъааъаааъа
Где ты тут видишь своё определение для time.sleep()? timeit(time.sleep)(1)
Обсуждают сегодня