Найти тему
Журнал «Код»

Делаем свой таймер на Python

Оглавление

Код — про­ще, воз­мож­но­стей — боль­ше.

У нас когда-то был мини-проект: сде­лать свой таймер-напоминалку, кото­рый спра­ши­ва­ет, про что вам напом­нить, а потом выда­ёт сооб­ще­ние через нуж­ное вре­мя. В про­шлый раз мы его сде­ла­ли на JavaScript, теперь напи­шем на Python. Пото­му что Python — это мод­но, кра­си­во и при­ят­но.

Отличия и особенности

JavaScript пре­кра­сен тем, что его мож­но запу­стить в кон­со­ли любо­го совре­мен­но­го бра­у­зе­ра. Это для него род­ная сре­да, и JS лег­ко рабо­та­ет со стра­ни­ца­ми, объ­ек­та­ми на ней, вклад­ка­ми бра­у­зе­ра и всем, что с ним свя­за­но.

Python — более уни­вер­саль­ный язык, кото­рый рабо­та­ет не толь­ко с бра­у­зе­ра­ми, поэто­му для него нужен отдель­ный интер­пре­та­тор. Интер­пре­та­тор — это про­грам­ма, кото­рая берёт исход­ный код и выпол­ня­ет коман­ду за коман­дой. Вы може­те напи­сать отлич­ный код, но что­бы его испол­нить, вам все­гда нужен будет интер­пре­та­тор.

Есть два спо­со­ба запу­стить Python-код:

  • Поста­вить Python себе на ком­пью­тер — этот спо­соб хорош, если вы реши­ли осно­ва­тель­но изу­чить язык или про­сто люби­те, когда всё быст­ро и под кон­тро­лем. Ска­чать Python мож­но с офи­ци­аль­но­го сай­та — есть вер­сии для всех основ­ных опе­ра­ци­он­ных систем.
    Из мину­сов — нуж­но раз­би­рать­ся в пара­мет­рах уста­нов­ки и настрой­ки и уметь рабо­тать с команд­ной стро­кой.
    Плю­сы — пол­ный кон­троль и быст­ро­дей­ствие.
    2. Исполь­зо­вать онлайн-сервисы, напри­мер, этот: onlinegdb.com/online_python_compiler. Рабо­та­ет точ­но так же — пише­те код, нажи­ма­е­те кноп­ку Run и смот­ри­те на резуль­тат.
    Мину­сы: так как это онлайн-сервис, им поль­зу­ет­ся одно­вре­мен­но мно­го чело­век, поэто­му быст­ро­дей­ствия от него ждать не сто­ит. С под­клю­че­ни­ем внеш­них моду­лей тоже могут воз­ник­нуть про­бле­мы, но с этим мож­но разо­брать­ся, если потра­тить немно­го вре­ме­ни.
    Плюс: не нуж­но ниче­го настра­и­вать и уста­нав­ли­вать, всё рабо­та­ет сра­зу из бра­у­зе­ра. Есть под­свет­ка син­так­си­са, сооб­ще­ния об ошиб­ках и воз­мож­ность сохра­не­ния кода.

Сей­час мы напи­шем тай­мер с огляд­кой на онлай­но­вый сер­вис. А отдель­но ещё рас­ска­жем об уста­нов­ке.

Исходный код на JavaScript

Что мы здесь сде­ла­ли:

  • спро­си­ли текст напо­ми­на­ния;
  • выяс­ни­ли, через сколь­ко минут нуж­но напом­нить;
  • поста­ви­ли тай­мер на нуж­ное вре­мя;
  • в нём напи­са­ли, что когда вре­мя вый­дет, надо выве­сти сооб­ще­ние и поми­гать заго­лов­ком стра­ни­цы.

Осо­бен­ность Python в том, что в нём нет встро­ен­ных средств рабо­ты с бра­у­зе­ром и его вклад­ка­ми, поэто­му поми­гать заго­лов­ком пока не полу­чит­ся. С дру­гой сто­ро­ны, Python не зави­сит от бра­у­зе­ра, поэто­му будем исполь­зо­вать штат­ные сред­ства вво­да и выво­да сооб­ще­ний.

Простая реализация на Python

Самое про­стое, что мож­но сде­лать — поста­вить про­грам­му на пау­зу на нуж­ное вре­мя, а потом выве­сти сооб­ще­ние. Для это­го под­клю­ча­ем стан­дарт­ный модуль time — он отве­ча­ет за рабо­ту со вре­ме­нем.

Модуль в Python — это уже гото­вый python-файл, где собра­ны зап­ча­сти, кото­рые помо­га­ют решать какую-то узкую зада­чу: функ­ции и клас­сы. Напри­мер, заме­рять вре­мя, рабо­тать с мате­ма­ти­че­ски­ми функ­ци­я­ми или кален­да­рём.

Что­бы сде­лать пау­зу, исполь­зу­ют коман­ду time.sleep(). Time — это назва­ние моду­ля, кото­рый мы под­клю­чи­ли, а sleep — функ­ция, кото­рая нахо­дит­ся внут­ри моду­ля. Её зада­ча — подо­ждать нуж­ное коли­че­ство секунд, а потом про­дол­жить выпол­не­ние про­грам­мы.

Что дальше: многозадачность и оптимизация

Наша про­грам­ма уже рабо­та­ет как нуж­но, но её мож­но улуч­шить. Дело в том, что ста­вить весь код на пау­зу — не самое удач­ное реше­ние с точ­ки зре­ния про­из­во­ди­тель­но­сти. Пред­ставь­те, что вам нуж­но поста­вить себе несколь­ко напо­ми­на­ний на раз­ное вре­мя. С таким под­хо­дом нам при­дёт­ся выяс­нять, какое сра­бо­та­ет рань­ше, потом кор­рек­ти­ро­вать вре­мя пау­зы для сле­ду­ю­ще­го напо­ми­на­ния и так далее.

Мож­но сде­лать так: выно­сить напо­ми­на­ния в отдель­ные пото­ки. Это как под­про­грам­ма, кото­рая рабо­та­ет парал­лель­но с нашей про­грам­мой и не силь­но зави­сит от неё. Это поз­во­лит не ждать пер­во­го собы­тия, а запус­кать их одно­вре­мен­но. Но про всё это — в сле­ду­ю­щем мате­ри­а­ле.

Подписывайтесь на наш канал – вас ждет много интересного!

Наука
7 млн интересуются