Найти - Пользователи
Полная версия: GIL
Начало » Флейм » GIL
1 2 3 4 5 6 7
xneo
Существуют ли WEB-фреймворки с модулями написаными на С, которые могут при полной загрузке использовать, скажем, 4-ядерный CPU на 100%?
JOHN_16
xneo
скорее нет, чем да. Причина банальна - это для этого не предназначено. Веб сервер должен заниматься именно вебом. Если есть тяжелые задачи для этого должны быть другие серверы. Сейчас некий условный стандарт это долгоиграющие или тяжелые задачи ложить в что то подобное ZeroMQ очередь и проверять ее статус AJAX запросами. Другой сервер берет задачу из очереди, выполняет ее и ложит результат в очередь .
4kpt_III
JOHN_16
Таск менеджеры, так сказать. Из наиболее популярных готовых решений: celery и RQ. Хотя я видел и самопальные неплохие велосипедики…
ZZZ
Загрузить питоном все ядра? Легко! Используйте потоки, а не нити и всё будет хорошо.
Ну и asyncio очень помогает этому…
py.user.next
ZZZ
Используйте потоки
Процессы. Потоки и нити - это threads.
ZZZ
py.user.next, плывёт терминология…
threads, это нити. Потоками я привык называть процессы. Возможно, это неправильно.
py.user.next
Поток - это, по-моему, абстрактное понятие, обозначающее линию выполнения программы.
И вот она уже реализуется конкретным способом: либо внутри одного процесса, либо несколькими процессами, либо ещё как-то (теоретически).
Так как многопоточность чаще всего реализуется в одном процессе, то потоками называют потоки внутри одного процесса (threads).
А если именно по ядрам раскладывать, то это делает операционная система, для которой один процесс - это один процесс. Либо она не знает, что там внутри, либо там что-то мешает их выполнять на разных ядрах (отсутствие реализации?). Поэтому чтобы раскинуть по ядрам, делают разные процессы.
И вот эта мода, в браузерах вкладки открывать в разных процессах, похоже, оттуда и идёт.
FishHook
py.user.next
И вот эта мода, в браузерах вкладки открывать в разных процессах, оттуда и идёт, похоже.
Погодите. Мода идет, потому что каждую зависшую вкладку можно кильнуть индивидуально. Разве можно завершить отдельный поток приложения извне не завершая всё приложение целиком?
py.user.next
FishHook
Разве можно завершить отдельный поток приложения извне не завершая всё приложение целиком?
Конечно, там у них очередь и они с неё читают сообщения. Пока идёт загрузка одной вкладки, можно пользоваться другими.
Сейчас количество ядер растёт, поэтому переводить всё на процессы - рационально.
PooH
Процесс это не только один или несколько потоков исполнения, это еще адресное пространство, окружение и выделенные ресурсы ядра.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB