Apparently there is some obscenity going on inside Python’s sockets implementation. A simple client that uses Python sockets produces as low as 22 RPS on my box, whereas an almost identical C client gives me about 7000 RPS. The problem disappeared after turning on TCP_NODELAY on the client socket – but this doesn’t explain the huge drop in performance. There is a Python project issue reported about it, but it seems the only recipe is to turn on TCP_NODELAY, i.e. not a real fix. Some "smart" fellow must have put in an artificial sleep, or calls send/recv with buffer of size 1 – a sensible explanation is hard to come by.