xneo
Сен. 22, 2015 11:13:55
Существуют ли WEB-фреймворки с модулями написаными на С, которые могут при полной загрузке использовать, скажем, 4-ядерный CPU на 100%?
JOHN_16
Сен. 22, 2015 14:03:53
xneo
скорее нет, чем да. Причина банальна - это для этого не предназначено. Веб сервер должен заниматься именно вебом. Если есть тяжелые задачи для этого должны быть другие серверы. Сейчас некий условный стандарт это долгоиграющие или тяжелые задачи ложить в что то подобное ZeroMQ очередь и проверять ее статус AJAX запросами. Другой сервер берет задачу из очереди, выполняет ее и ложит результат в очередь .
4kpt_III
Сен. 22, 2015 15:26:20
JOHN_16
Таск менеджеры, так сказать. Из наиболее популярных готовых решений: celery и RQ. Хотя я видел и самопальные неплохие велосипедики…
ZZZ
Сен. 22, 2015 18:44:38
Загрузить питоном все ядра? Легко! Используйте потоки, а не нити и всё будет хорошо.
Ну и asyncio очень помогает этому…
py.user.next
Сен. 23, 2015 03:58:27
ZZZ
Используйте потоки
Процессы. Потоки и нити - это threads.
ZZZ
Сен. 23, 2015 10:21:22
py.user.next, плывёт терминология…
threads, это нити. Потоками я привык называть процессы. Возможно, это неправильно.
py.user.next
Сен. 23, 2015 11:47:49
Поток - это, по-моему, абстрактное понятие, обозначающее линию выполнения программы.
И вот она уже реализуется конкретным способом: либо внутри одного процесса, либо несколькими процессами, либо ещё как-то (теоретически).
Так как многопоточность чаще всего реализуется в одном процессе, то потоками называют потоки внутри одного процесса (threads).
А если именно по ядрам раскладывать, то это делает операционная система, для которой один процесс - это один процесс. Либо она не знает, что там внутри, либо там что-то мешает их выполнять на разных ядрах (отсутствие реализации?). Поэтому чтобы раскинуть по ядрам, делают разные процессы.
И вот эта мода, в браузерах вкладки открывать в разных процессах, похоже, оттуда и идёт.
FishHook
Сен. 23, 2015 11:55:15
py.user.next
И вот эта мода, в браузерах вкладки открывать в разных процессах, оттуда и идёт, похоже.
Погодите. Мода идет, потому что каждую зависшую вкладку можно кильнуть индивидуально. Разве можно завершить отдельный поток приложения извне не завершая всё приложение целиком?
py.user.next
Сен. 23, 2015 14:01:00
FishHook
Разве можно завершить отдельный поток приложения извне не завершая всё приложение целиком?
Конечно, там у них очередь и они с неё читают сообщения. Пока идёт загрузка одной вкладки, можно пользоваться другими.
Сейчас количество ядер растёт, поэтому переводить всё на процессы - рационально.
PooH
Сен. 23, 2015 14:12:43
Процесс это не только один или несколько потоков исполнения, это еще адресное пространство, окружение и выделенные ресурсы ядра.