Простой Python. Современный стиль программирования (Любанович) - страница 177

• iso8601 (https://pypi.python.org/pypi/iso8601). Этот модуль заполняет пробелы, связанные с работой модулей стандартной библиотеки, когда речь идет о формате ISO 8601.

• fleming (https://github.com/ambitioninc/fleming). Модуль содержит множество функций для работы с часовыми поясами.

Упражнения

1. Запишите текущие дату и время как строку в текстовый файл today.txt.

2. Прочтите текстовый файл today.txt и разместите данные в строке today_string.

3. Разберите дату из строки today_string.

4. Выведите на экран список файлов текущего каталога.

5. Выведите на экран список файлов родительского каталога.

6. Используйте модуль multiprocessing, чтобы создать три отдельных процесса. Заставьте каждый из них ждать случайное количество секунд (от одной до пяти), вывести текущее время и завершить работу.

7. Создайте объект date, содержащий дату вашего рождения.

8. В какой день недели вы родились?

9. Когда вам будет (или уже было) 10 000 дней от роду?

Глава 11. Конкуренция и сети

Время — такая штука, при помощи которой природа не позволяет всем событиям произойти сразу. Пространства — такая штука, благодаря которой все это не происходит со мной.

Альберт Эйнштейн

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

• Производительность. Ваша цель заключается в том, чтобы более быстрые компоненты были постоянно заняты, а не ждали более медленных.

• Прочность. Один в поле не воин, поэтому вы хотите продублировать задачи, чтобы обойти недостатки аппаратной и программной частей.

• Простота. Хорошим тоном является разбиение сложных задач на много простых, которые проще создать, понять и исправить.

• Коммуникация. Отправлять независимые байты куда-нибудь далеко, чтобы они пришли с друзьями, очень весело.

Мы начнем с рассмотрения конкуренции, основываясь поначалу на несетевых приемах, описанных в главе 10, — процессах и потоках. Далее рассмотрим остальные подходы вроде функций обратного вызова, зеленых потоков и сопрограмм. Наконец, поговорим о работе с сетями, изначально в рамках вопроса о конкуренции, а затем и целиком.


Некоторые пакеты Python, рассмотренные в этой главе, еще не были портированы в Python 3 на момент написания книги. В большинстве случаев я буду показывать вам код, который нужно запускать с помощью интерактивного интерпретатора Python 2, который мы называем python2.