Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 22, 2015 11:13:55

xneo
Зарегистрирован: 2015-09-20
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

GIL

Существуют ли WEB-фреймворки с модулями написаными на С, которые могут при полной загрузке использовать, скажем, 4-ядерный CPU на 100%?

Офлайн

#2 Сен. 22, 2015 14:03:53

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

GIL

xneo
скорее нет, чем да. Причина банальна - это для этого не предназначено. Веб сервер должен заниматься именно вебом. Если есть тяжелые задачи для этого должны быть другие серверы. Сейчас некий условный стандарт это долгоиграющие или тяжелые задачи ложить в что то подобное ZeroMQ очередь и проверять ее статус AJAX запросами. Другой сервер берет задачу из очереди, выполняет ее и ложит результат в очередь .



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Сен. 22, 2015 15:26:20

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

GIL

JOHN_16
Таск менеджеры, так сказать. Из наиболее популярных готовых решений: celery и RQ. Хотя я видел и самопальные неплохие велосипедики…

Отредактировано 4kpt_III (Сен. 22, 2015 15:26:50)

Офлайн

#4 Сен. 22, 2015 18:44:38

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

GIL

Загрузить питоном все ядра? Легко! Используйте потоки, а не нити и всё будет хорошо.
Ну и asyncio очень помогает этому…



Офлайн

#5 Сен. 23, 2015 03:58:27

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

GIL

ZZZ
Используйте потоки
Процессы. Потоки и нити - это threads.



Офлайн

#6 Сен. 23, 2015 10:21:22

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

GIL

py.user.next, плывёт терминология…
threads, это нити. Потоками я привык называть процессы. Возможно, это неправильно.



Офлайн

#7 Сен. 23, 2015 11:47:49

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

GIL

Поток - это, по-моему, абстрактное понятие, обозначающее линию выполнения программы.
И вот она уже реализуется конкретным способом: либо внутри одного процесса, либо несколькими процессами, либо ещё как-то (теоретически).
Так как многопоточность чаще всего реализуется в одном процессе, то потоками называют потоки внутри одного процесса (threads).
А если именно по ядрам раскладывать, то это делает операционная система, для которой один процесс - это один процесс. Либо она не знает, что там внутри, либо там что-то мешает их выполнять на разных ядрах (отсутствие реализации?). Поэтому чтобы раскинуть по ядрам, делают разные процессы.
И вот эта мода, в браузерах вкладки открывать в разных процессах, похоже, оттуда и идёт.



Отредактировано py.user.next (Сен. 23, 2015 11:53:04)

Офлайн

#8 Сен. 23, 2015 11:55:15

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

GIL

py.user.next
И вот эта мода, в браузерах вкладки открывать в разных процессах, оттуда и идёт, похоже.
Погодите. Мода идет, потому что каждую зависшую вкладку можно кильнуть индивидуально. Разве можно завершить отдельный поток приложения извне не завершая всё приложение целиком?



Офлайн

#9 Сен. 23, 2015 14:01:00

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

GIL

FishHook
Разве можно завершить отдельный поток приложения извне не завершая всё приложение целиком?
Конечно, там у них очередь и они с неё читают сообщения. Пока идёт загрузка одной вкладки, можно пользоваться другими.
Сейчас количество ядер растёт, поэтому переводить всё на процессы - рационально.



Офлайн

#10 Сен. 23, 2015 14:12:43

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

GIL

Процесс это не только один или несколько потоков исполнения, это еще адресное пространство, окружение и выделенные ресурсы ядра.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version