Многопоточность — не всегда правильный ответ. Вот почему!

Современная разработка программного обеспечения направлена ​​на повышение эффективности приложений.

Таким образом, параллелизм является критически важным аспектом, поскольку современные приложения одновременно выполняют несколько задач и максимально эффективно используют оборудование.

Давайте лучше изучим это на примере.

Мы открываем небольшую кофейню и создаем мобильное приложение, с помощью которого пользователи могут размещать заказы на кофе онлайн.

Давайте напишем простой сервер, который обрабатывает эти запросы заказов.

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()

Выше мы настроили кофейный сервер, который использует сокеты для связи с пользователями по сети. Пользователи могут подключаться к серверу, отправлять заказы на кофе и получать соответствующие ответы.