У меня есть история, которая похожа на небольшую комедию. Один программист пытался сделать свой код работающим одновременно в двух режимах: слушать входящие соединения через TCP и обновлять кеши. Как вы думаете, что из этого получилось?
Он создал сервер для приема данных через TCP, а затем запустил цикл в функции main().
Но вот беда — как заставить эти два цикла работать параллельно? Программист попробовал использовать asyncio, но что-то пошло не так.
Когда он добавил цикл loop.run_forever(), ожидая входящих соединений, у него возникли странные проблемы. Одна строчка «debug print?» выводилась только один раз, хотя программа должна была ее печатать многократно.
Видимо, цикл asyncio забирал на себя всю внимательность.
И тут на помощь пришел советчик со своей идеей о многопоточности. «Создайте поток для каждой из задач!» — предложил он.
Ну что же, кажется, наш герой отправился на новое приключение — изучение многопоточности.
Возможно, это станет началом нового комического сериала «Приключения программиста в поисках параллельности». Ждем продолжения следующим летом!
А пока у нас все как в анекдоте про программиста: «Программист шел по лесу и нашел лягушку. Лягушка говорит: ‘Поцелуй меня, и я превращусь в прекрасную принцессу’. Программист кладет лягушку в карман и говорит: ‘Лучше будешь полезной'».
Или еще один классический анекдот: «Программист написал код, запустил его — все работает! Настоящий профессионал! Пока пользователи его не начали использовать…».
Так что друзья, не теряйте чувство юмора даже в самых сложных ситуациях с кодом!