почему бесполезно? ну если на одноядерном процессоре... при парсинге сайтов больше 50 потоков никакого прироста производительности не давало. Там простой шаблон обработки:
class Worker(Thread):
...
def run(self):
while not self.q.empty():
try:
data = self.q.get()
...
Никаких дидлоков никогда не было. Вообще читаю вас и складывается впечатление, что вы толи рукожопы толи клинические придурки.
причем тут твои говноботы для «парсинга»? как это соотносится с твоим утверждением «GIL тебе никак не мешает»? откуда ты знаешь какие задачи человек решает? я тебе ясно дал понять и выше объяснил, что к чему.
т.е. макака «парсила сайт» и теперь с наглой рожей самоуверенно заявляет:
GIL тебе никак не мешает Освой Python @ не пиши куйню
При использовании multiprocessing GIL уже нет
тебе бы, дурак, ротик закрыть не мешало и не высовываться.
Паучки например отлично задупляются в gil как только ты начинаешь хотеть больше и сразу, ещё раньше чем сервер или сеть тебя пошлют подальше. Конечно тебе потребуется пул хороших приватных прокси. Решение разве что запустить больше питонов (тот же мультипроцессинг в принципе). Но это не сказать чтобы прямо задача, гил действительно серьёзная проблема для мультипоточных алгоритмов. Но не для гуя и десктопных.
Интересно, как работает стаклес? Гил то остаётся, добавляются только зелёные треды по-сути. Но мне кажется проблема гила слишком переоценена многими, проблема не в нём, а в том, что питон адовый тормоз, и когда это накладывается на гил в многопоточном приложении, его маленькие недостатки становятся более очевидны.
ну если на одноядерном процессоре... при парсинге сайтов больше 50 потоков никакого прироста производительности не давало
Не ясно, что ты хочешь сказать этим нечленораздельным бредом, но зато ясно как день, что ты идиот. Ты упомянул количество ядер, значит абсолютно не предтавляешь о чём говоришь. Количество ядер не важно, по факту «многопоточный» код на питоне на нескольких ядрах будет работать слегка медленней чем на одном.
Никаких дидлоков никогда не было
Я тебе ничего про делоки не говорил, а тот, кто говорил, говорил про «нативный код», не ясно чего он имел ввиду.
вы толи рукожопы толи клинические придурки
Рукожопы и придурки как раз таки не знают ничего кроме питона, радостно долбятся в анус костылями и отрицают очевидное.
Ну, чувак откровенно тупой, если не видит разницы между многопоточным кодом и процессами, которые обмениваются данными с чдовищными накладными расходами.
проблемы как я понял только у тсаря. но это просто жирный тролль, ему лишь бы срачь вызвать. да python мнедленный, но разве кто-то на нем пытается трехмерную графику обрабатывать? обычный скриптовый язык для веба и прикладных задач на сервере + имеет применение в качестве скриптового языка в туевой куче программ. серверу на питоне достаточно держать 1000 соединений в секунду. с этой задачей он справляется без всяких сишных расширений. если не заходить за рамки этих задач - проблем нет.
но разве кто-то на нем пытается трехмерную графику обрабатывать?
т.е. единственная задача, где процессор такие выполняет инструкции это «трехмерная графика», а весь остальной компьютинг - это хомячковские http-запросы «парсера» tz4678.
тебе надо закрыть рот. перейди к написанию второго скрипта на питоне. и да, прочитай какую-нибудь книжку вроде «компьютер для чайников» я хз, посоветовать не могу.
обычный скриптовый язык для веба и прикладных задач на сервере имеет применение в качестве скриптового языка в туевой куче программ
во-первых, питон это ЯП общего назначения
во-вторых, все перечисленные тобой выше применения таки подразумевают выполнение кода.
ржу с клоуна. мне скорее до одного места твой gil. лучше приведи примеры, где у тебя возникли проблемы. фрагменты кода давай. потому как твоя писанина не имеет пока никакого смысла.
т.е. тебе нужен пример работы, которая параллелится? ты серьезно??
да ты вообще оказывается дно. может тебе еще необходимость операции сложения в процессоре обосновать, полудурок?
и ты еще умничаешь и хамишь при этом?
где у тебя возникли проблемы
у меня никаких проблем нет.
потому как твоя писанина не имеет пока никакого смысла фрагменты кода давай ржу с клоуна
ничтожество, заткнись и забанься. и да: программист из тебя никогда не получится
ага Java тоже язык общего назначения...
а на крестах все серверы пишут
во-вторых, все перечисленные тобой выше применения таки подразумевают выполнение кода.
ко-ко-ко. во всех питоновских примерах с тредами используются очереди (извлечение, добавление, удаление элементов из которых блокирующие), но ты по-ходу аметист и 100500 глобальных объектов изменяешь без всяких блокировок да еще и в цикле... ну так можно нарваться на проблемы с gil. я хз что великому и ужасному тсарю в голову придет без галоперидола
У тебя отсутствуют базовые представления о предмете разговора. Работа - это работа процессора, т.е. любые инструкции. Минутка школы для дебила tz4678: любая строчка кода, не ведущая в ставание в ожидание ио - пример такой работы. И в питоне вся она будет конкурировть за gil.
таким образом (прочти вышесказанное еще раз пока не поймешь) работы которая параллелится - море. таким образом остальные все процессоры фактически не будут работать. экономически это провал. учитывая, что была написана корректная многопоточная програма в которой конкурентный доступ там где он есть не вызывает гонок - то это двойной экономический провал. (т.е. ты tz4678 или не ценишь свое время или не писал даже элементарных программ) любой средненький программист это знает, примеров таких задач ему не надо, потому даже пятиклассник понимает? что такое рапараллелить код чтобы утилизировать все процессоры.
но весь твой опыт сводится к чему-то дрогому, и как ты показал выше, сводится твой опыт к нулю.
но ты по-ходу аметист и 100500 глобальных объектов изменяешь без всяких блокировок да еще и в цикле...
в отличие от тебя, я программирую обладая пониманием того что я делаю и всеми средствами синхронизации доступа, блокировок в многопоточном приложении владею и использую.
ну так можно нарваться на проблемы с gil
во-вторых блокировки которые в питоне ставит программист к гилу оношения не имеют, а если и притянуть за уши то имеют ровно обратное.
Нет, это базовые вещи, которые любой программист обязан понимать и, конечно, видит на практике. Мне даже кажется странным что такие элементарные вещи приходится тебе доказывать.
Но конкретно у тебя нет ни представления об этом, ни опыта практического, поэтому для тебя всё это вода и т.п.
мне же интересно было бы примеры кода увидеть где можно дидлок схватить или где gil тормозит, т.е. выполнениее нескольких тредов происходит медленее чем последовательный вызов чего-то там.
Ну я же говорю, ты про ивент лупы «не слышал». И до asyncio, если бы не был рукожопой обезьяной без проблем бы запилил ивент-луп. Не говоря уже том, и готовые всегда были.
я на торнадо и прочих твистедах не писал. че дальше? asyncio стандарт, то были велосипеды, причем работали они не быстрее чем традиционные серверы, которые порождают треды для обработки соединений
В случае того парсинга сайтов ты ивент-луп мог запилить даже поверх стандартного синхронного httplib.HTTPConnection вообще без проблем, просто не осилил.
да накуй он мне нужен? про eventlet я знал, но не пользовался им. я вообще не понимаю че вам двоим надо. тсарь вон пишет, что в пистоне треды не треды, гил ему мешает, а у меня куча приложений на фласке, которые эти самые треды юзают, могут обрабатывать 1000 соединений в секунду - мне другого и не надо, а тсарь пишет мол я мудак ничего не понимаю и рассказывает про какие-то дидлоки, про то что усе там тормозит и пр, а у меня все работает... у него не работает, говорю покажи писеч... код, а он не показывает, стесняется. ты еще альтернативно-одаренный с евент-лупами. ну были они сто лет как в пистоне, тому же твистеду лет 10. че это меняет?