import socket import asyncio import os from concurrent.futures import ProcessPoolExecutor from multiprocessing import Process async def handle_client(reader, writer): request = await reader.read(100) response = b"HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nHello, world!" writer.write(response) await writer.drain() writer.close() async def main(sock): server = await asyncio.start_server(handle_client, sock=sock) async with server: await server.serve_forever() def start_server(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1) sock.bind(('0.0.0.0', 8000)) sock.listen(5) sock.setblocking(False) loop = asyncio.get_event_loop() loop.run_until_complete(main(sock)) if __name__ == '__main__': num_processes = os.cpu_count() processes = [] for _ in range(num_processes): p = Process(target=start_server) p.start() processes.append(p) for p in processes: p.join()