(Напомним, что gevent запускает несколько гринлетов в одном потоке Python, совместно их мультиплексируя для выполнения совместной многозадачности, переключаясь между ними, как если бы они блокировали ввод-вывод.)
gevent.sleep()
выдаст текущий гринлет в концентратор gevent, что позволит запускать другие гринлеты. time.sleep()
не уступит хабу; он просто приостановит весь текущий поток и всех гринлетов, которые могли бы работать на нем.
С другой стороны, time.sleep
выпустит GIL Python и предоставит возможность другим потокам Python запускать (но все еще блокирует все гринлеты в вызывающем потоке), тогда как gevent.sleep
не освобождает GIL (если нет нет других гринлетов, готовых работать в вызывающей ветке).
Если вы запатентовали вашу программу (достаточно рано), используя gevent.monkey.patch_all()
, тогда time.sleep
просто становится псевдонимом для gevent.sleep
, и нет никакой разницы.
В программе, использующей gevent, monkey patching или явно использующей gevent.sleep
, обычно рекомендуется вместо time.sleep
, в противном случае вы не сможете воспользоваться всеми преимуществами кооперативных гринлетов.
Более подробная информация представлена в вводной документации Gevent , в частности, в разделах о цикле событий, совместной многозадачности и псевдопотоках (гринлетах).