Программы и процессы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Создаем процесс с помощью модуля subprocess . . . . . . . . . . . . . . . . 288
Создаем процесс с помощью модуля multiprocessing . . . . . . . . . . . . 290
Убиваем процесс с помощью функции terminate() . . . . . . . . . . . . . . 290
Календари и часы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Модуль datetime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Модуль time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
Читаем и записываем дату и время . . . . . . . . . . . . . . . . . . . . . . . . . 297
Альтернативные модули . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
16
Оглавление
Глава 11. Конкуренция и сети . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Конкуренция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
Очереди . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
Процессы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
Потоки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
Зеленые потоки и gevent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
twisted . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
asyncio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Redis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
Помимо очередей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
Сети . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Шаблоны . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Модель публикации-подписки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
Сокеты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
ZeroMQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
Scapy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
Интернет-службы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Веб-службы и API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Удаленная обработка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
Большие данные и MapReduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Работаем в облаках . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
Глава 12. Быть питонщиком . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
О программировании . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Ищем код на Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Установка пакетов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Используем pip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Менеджер пакетов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Установка из исходного кода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Интегрированные среды разработки . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
IDLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
PyCharm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
IPython . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
Оглавление
17
Именуйте и документируйте . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351