Я заметил, что у Gevent есть объект threadpool. Может кто-нибудь объяснить мне, когда использовать threadpool и когда использовать обычный пул? В чем разница между gevent.threadpool и gevent.pool?Когда использовать Threadpool в Gevent
ответ
Когда у вас есть кусок кода на Python, который занимает много времени (секунды) и не вызовет поворота зелий. (нет сетей). Все остальные задания greenlets/gevent будут «голодать» и не будут вычислять время, и это будет выглядеть так, как будто приложение «зависает».
Если вы поставили эту «тяжелую» задачу в Threadpool, выполнение в потоке будет гарантировать, что другие зелени не будут голодать. Но я верю, что если ваш код потратит много времени в библиотеке c, он не будет иметь никакого эффекта.
ниже пример от gevent examples. Обратите внимание, что в этом примере используется time.sleep, который блокирует, а не gevent.sleep.
TIP: Если у вас есть цикл, который занимает много времени, чтобы работать, чем вы можете просто положить в gevent.sleep (0) в цикле. У каждого цикла другие зелёные звёзды будут иметь шанс бежать. GEvent .sleep (0) в вашем медленном цикле будет убедиться, что другие greenlets не будут голодать и приложение появляется отзывчивым
import time
import gevent
from gevent.threadpool import ThreadPool
pool = ThreadPool(3)
start = time.time()
for _ in xrange(4):
pool.spawn(time.sleep, 1)
gevent.wait()
delay = time.time() - start
print 'Running "time.sleep(1)" 4 times with 3 threads. Should take about 2 seconds: %.3fs' % delay
- 1. Исключения ThreadPool в gevent не возвращаются
- 2. Когда мне нужно использовать monkey_patch с gevent
- 3. Android - Когда использовать HandlerThread/Thread/ThreadPool/IntentService?
- 4. Знайте, когда ThreadPool пуст
- 5. C# - ThreadPool QueueUserWorkItem Использовать?
- 6. Как использовать ThreadPool класс
- 7. Как использовать локальный модуль gevent
- 8. Twisted, gevent eventlet - Когда я буду использовать их
- 9. Ошибка очереди gevent с LoopExit
- 10. приемлемо ли использовать ThreadPool в библиотеке?
- 11. Что использовать таймер или ThreadPool в java?
- 12. Когда ThreadPool выделяет поток для экземпляра Backgroundworker?
- 13. Поддержка Gevent в Python3
- 14. Можно ли использовать SQLalchemy с gevent?
- 15. Установка gevent в virtualenv
- 16. Сбор мусора в ThreadPool?
- 17. Веб-страница сигнализации, когда поток ThreadPool завершен
- 18. ThreadPool Finish Работает, когда программа закрывается
- 19. Gevent: NotImplementedError
- 20. APM Pattern Использовать нить из Threadpool?
- 21. Какой ThreadPool на Java я должен использовать?
- 22. Java: какой ThreadPool я должен использовать здесь?
- 23. Как использовать ThreadPool для запуска параллельной нити?
- 24. Threadpool в контексте IIS
- 25. Библиотека ThreadPool в C++
- 26. Silverlight Threadpool
- 27. Generic ThreadPool в .NET
- 28. Как использовать mysql в программах на основе gevent в python?
- 29. использования ThreadPool
- 30. ThreadPool Exception
«Но я верю, что если ваш код тратит много времени в библиотеке переменного тока будет иметь никакого эффекта "вы уверены? Вы имеете в виду расширения C или 'ctypes'? Потому что, если вы отпустите GIL (вручную в расширении C или автоматически, как 'ctypes'), то приложение получит выгоду от ThreadPool, не так ли? – MariusSiuram
есть. «если вы выпустили GIL» точно. У меня нет времени, чтобы понять, что из каждого C libary ... – Stephan