Многопоточность — не всегда правильный ответ. Вот почему!
Современная разработка программного обеспечения направлена на повышение эффективности приложений.
Таким образом, параллелизм является критически важным аспектом, поскольку современные приложения одновременно выполняют несколько задач и максимально эффективно используют оборудование.
Давайте лучше изучим это на примере.
Мы открываем небольшую кофейню и создаем мобильное приложение, с помощью которого пользователи могут размещать заказы на кофе онлайн.
Давайте напишем простой сервер, который обрабатывает эти запросы заказов.
from socket import socket, create_server BUFFER_SIZE = 1024 ADDRESS = ("127.0.0.1", 12345) class CoffeeServer: def __init__(self): try: self.server_socket = create_server(ADDRESS) print("Coffee server started at:", ADDRESS) except OSError: print("\nCoffee server stopped.") def accept(self): conn, client_address = self.server_socket.accept() print("Connected to a coffee lover at:", client_address) return conn def serve(self, conn): try: while True: order = conn.recv(BUFFER_SIZE).decode().strip() if not order: break response = self.process_order(order) conn.send(response.encode()) finally: print("Connection with", conn.getpeername(), "closed") conn.close() def process_order(self, order): menu = { "1": "Your espresso is on its way!", "2": "Enjoy your latte!", "3": "Your cappuccino is coming right up!", } return menu.get(order, "Sorry, we don't have that option.") def start(self): print("Coffee server is ready to take orders") try: while True: conn = self.accept() self.serve(conn) finally: self.server_socket.close() print("\nCoffee server stopped.") if __name__ == "__main__": coffee_server = CoffeeServer() coffee_server.start()
Выше мы настроили кофейный сервер, который использует сокеты для связи с пользователями по сети. Пользователи могут подключаться к серверу, отправлять заказы на кофе и получать соответствующие ответы.