Какой режим блокировки вашего сокета?
Если вы находитесь в режиме блокировки (который, я думаю, используется по умолчанию), ваша программа остановится до тех пор, пока данные не станут доступны ... После этого вы не сможете перейти на следующую строку после recv (), пока не поступят данные.
Однако, если вы переключитесь в неблокирующий режим (см. Socket.setblocking (flag)), я думаю, что это вызовет исключение, которое вам придется перехватывать, а не проверять ноль.