Форум сайта python.su
Существуют ли WEB-фреймворки с модулями написаными на С, которые могут при полной загрузке использовать, скажем, 4-ядерный CPU на 100%?
Офлайн
xneo
скорее нет, чем да. Причина банальна - это для этого не предназначено. Веб сервер должен заниматься именно вебом. Если есть тяжелые задачи для этого должны быть другие серверы. Сейчас некий условный стандарт это долгоиграющие или тяжелые задачи ложить в что то подобное ZeroMQ очередь и проверять ее статус AJAX запросами. Другой сервер берет задачу из очереди, выполняет ее и ложит результат в очередь .
Офлайн
JOHN_16
Таск менеджеры, так сказать. Из наиболее популярных готовых решений: celery и RQ. Хотя я видел и самопальные неплохие велосипедики…
Отредактировано 4kpt_III (Сен. 22, 2015 15:26:50)
Офлайн
Загрузить питоном все ядра? Легко! Используйте потоки, а не нити и всё будет хорошо.
Ну и asyncio очень помогает этому…
Офлайн
ZZZПроцессы. Потоки и нити - это threads.
Используйте потоки
Офлайн
py.user.next, плывёт терминология…
threads, это нити. Потоками я привык называть процессы. Возможно, это неправильно.
Офлайн
Поток - это, по-моему, абстрактное понятие, обозначающее линию выполнения программы.
И вот она уже реализуется конкретным способом: либо внутри одного процесса, либо несколькими процессами, либо ещё как-то (теоретически).
Так как многопоточность чаще всего реализуется в одном процессе, то потоками называют потоки внутри одного процесса (threads).
А если именно по ядрам раскладывать, то это делает операционная система, для которой один процесс - это один процесс. Либо она не знает, что там внутри, либо там что-то мешает их выполнять на разных ядрах (отсутствие реализации?). Поэтому чтобы раскинуть по ядрам, делают разные процессы.
И вот эта мода, в браузерах вкладки открывать в разных процессах, похоже, оттуда и идёт.
Отредактировано py.user.next (Сен. 23, 2015 11:53:04)
Офлайн
py.user.nextПогодите. Мода идет, потому что каждую зависшую вкладку можно кильнуть индивидуально. Разве можно завершить отдельный поток приложения извне не завершая всё приложение целиком?
И вот эта мода, в браузерах вкладки открывать в разных процессах, оттуда и идёт, похоже.
Офлайн
FishHookКонечно, там у них очередь и они с неё читают сообщения. Пока идёт загрузка одной вкладки, можно пользоваться другими.
Разве можно завершить отдельный поток приложения извне не завершая всё приложение целиком?
Офлайн
Процесс это не только один или несколько потоков исполнения, это еще адресное пространство, окружение и выделенные ресурсы ядра.
Офлайн