@ru_python

Страница 7529 из 9768
Николай
26.12.2018
11:53:05
Сделать кастомный тип?

Там есть возможность предоперации?

Или есть некий превосходный тип, о котором я не в курсе?

Игорь
26.12.2018
11:53:56
def func2(*a, **kw): try: func(*a, **kw) except: return
def func(): return funcA() def funcA(): return funcB() def funcB(): return funcD() def funcD(): raise Exception Я хочу обработать непредвиденное исключение на месте в funcD и никуда ничего не поднимать и завершить работу скрипта

Google
Tishka17
26.12.2018
11:55:21
где хочешь обработатьт - лови

хочешь выйти - кидай такое чтобы где обрабатывали только на самом верзху или нигде

Игорь
26.12.2018
11:58:02
короче, я справшивал, как завершить подпроцесс на месте и не повесить при этом родительский. Зачем мне это нужно за скобки. Если по существу нет ответа, понял, поищу в другом месте

Tishka17
26.12.2018
11:58:37
просто return в функции будет работать

Игорь
26.12.2018
11:59:30
просто return в функции будет работать
это не то, что мне нужно, в этом дело. что он будет работать я знаю

Tishka17
26.12.2018
11:59:45
lf ,kby

да блин

чем не то?

ты хочешь завершить функцию - азвершай функцию

не хочешь завершать - не завершай

хочешь логику при завершении - сделай логику там где завершаешь

Google
Tishka17
26.12.2018
12:01:04
я все ещё не понимаю чем return не подходит

Николай
26.12.2018
12:01:35
Ты просто не Игорь, тебе не понять

Tishka17
26.12.2018
12:02:10
как понял, что я не Игорь?

Игорь
26.12.2018
12:02:15
Ты просто не Игорь, тебе не понять
ахахаха.... Евгений Ваганович, перелогинитесь

не конфа, а смехопонарама

уморительно

Николай
26.12.2018
12:02:46
ахахаха.... Евгений Ваганович, перелогинитесь
Евгений ваганович как раз ты, раз тебе не подходит самый простой из вариантов по твоему описанию. Ну или объяснять не умеешь

Tishka17
26.12.2018
12:03:23
нет, серьезно. Если решать задачу в лоб, как ты просишь, я дал совет. Если не в лоб - непонятно какие костыли ты хочешь и зачем именно костыли

Роман
26.12.2018
12:03:58
Короче, не удалось мне скудным своим умишкой постичь прелести псевдотерминалов, отказываются они со мной работать

но всем спасибо за попытки вбить знания в черепную коробку мне

Игорь
26.12.2018
12:06:38
Еще раз, в старом коде у меня где-то в глубине в одном спецефицеском месте выскакивает критическая ошибка. Для того, что бы обработать ее и сдеать return, мне нужно этот return прокидывть через семь слоев стека. Это критическая ошибка, мне нужно после ее возникновения просто убить подпроцесс и перейти к следующим данным из очереди в map

Николай
26.12.2018
12:07:20
найди где возникает ошибка да сделай except Error: pass

Николай
26.12.2018
12:07:33
За то ты шутник прям первоклассный
как объясняешь так и помогают

Alex
26.12.2018
12:08:03
и в обработчике напиши return

Игорь
26.12.2018
12:08:11
Короче можно просто сказать есть способ убить подпроцесс или нет?

Игорь
26.12.2018
12:08:23
а не рассказывать мне, как написать код?

Google
Alex
26.12.2018
12:08:40
а не рассказывать мне, как написать код?
ну может быть тебе рассказывают потому что ты делаешь хуйню?

и тебе рассказывают как сделать правильно

Игорь
26.12.2018
12:09:36
хуйню или нет, я сам решу. а мне советуют хуйню вроде sys.exit() которая нихера не работает

Alex
26.12.2018
12:09:37
а ты продолжаешь упорствовать: "нет, я не хочу решать задачу, я хочу костылиЭ

Игорь
26.12.2018
12:09:40
короче ясно

Alex
26.12.2018
12:10:00
хуйню или нет, я сам решу. а мне советуют хуйню вроде sys.exit() которая нихера не работает
если она не работает - ты делаешь что-то определенно не так

Игорь
26.12.2018
12:10:11
а ты продолжаешь упорствовать: "нет, я не хочу решать задачу, я хочу костылиЭ
я хочу ответ на свой вопрос, а не уроки кода от ГУРУ

Николай
26.12.2018
12:10:27
для подпроцесса вполне подойдёт на любом уровне вложенности

найди где возникает ошибка да сделай except Error: pass

Игорь
26.12.2018
12:10:40
короче ладно, проехали

Николай
26.12.2018
12:10:50
Если даже это тебя не устроит - то...

Alex
26.12.2018
12:11:23
я хочу ответ на свой вопрос, а не уроки кода от ГУРУ
у тебя классический XY-problem, только ты этого еще не понял

для подпроцесса вполне подойдёт на любом уровне вложенности
может быть он ловит SystemExit? поэтому и ничего не работает

где-то в коде затесался except:

хуйню или нет, я сам решу. а мне советуют хуйню вроде sys.exit() которая нихера не работает
если ты бездумно применил совет и у тебя не заработало, то это исключительно трудности недостатка твоей квалификации, но никак не окружающих.

Сергей
26.12.2018
12:15:38
а еще смешно читать обидки рандомного чувака в чатике, который пришел и требует решения

Игорь
26.12.2018
12:16:50
Да и нравоучения от рандомных чуваков в чатике это прям ТОП. В интернете кто-то не прав

Google
Alex
26.12.2018
12:16:54
а еще смешно читать обидки рандомного чувака в чатике, который пришел и требует решения
ты удивишься (на самом деле нет) как много подобных персонажей, которые считают, что им все должны.

Игорь
26.12.2018
12:16:55
Как вссегда

Вы чет упоролись, спросил вопрос. Дали не тот ответ, уточнил. Ни кто ответить не смог, началось: сделай по-другому, я бы сделал так. Только вот вопрос не о том был. Что я и уточнил. Если вы, многоуважаемые не можете дать ответ точно и начинаете тут сыпать своей эрудированностью по всему, что знаете, то это не ко мне. Мне ваша эрудированность не к селу не к городу.

Сергей
26.12.2018
12:19:48
Да и нравоучения от рандомных чуваков в чатике это прям ТОП. В интернете кто-то не прав
они тратят свое время, чтобы помочь тебе решить твою проблему. просто так. прояви чуть-чуть уважения, зачем агриться и разводить срач?

Admin
ERROR: S client not available

Игорь
26.12.2018
12:20:03
Нет, они шутят про мое Имя

а не помогают решить проблему

Как бы все

До этого срача не было

Tishka17
26.12.2018
12:22:26
то есть raise + return все ещё не катит?

ну окей

Alex
26.12.2018
12:22:36
def func(): return funcA() def funcA(): return funcB() def funcB(): return funcD() def funcD(): raise Exception Я хочу обработать непредвиденное исключение на месте в funcD и никуда ничего не поднимать и завершить работу скрипта
это достаточно хреновая практика, так как в общем случае отследить с какого перепугу у тебя завершается дочерний будет неочевидно.

Alex
26.12.2018
12:24:02
угу, raise + return - это наиболее корректный способ решить проблему

возвращаясь к sys.exit - покажи код

кстати если ты делал sys.exit(0) то пул мог не понять с какого перепугу дочерний процесс завершился корректно, что возможно привело к наблюдаемому зависанию.

нужно смотреть код пула

Andrew
26.12.2018
12:26:44
возвращаясь к sys.exit - покажи код
Он тут желчью весь чатик забрызгал. Пусть лесом идет может?

xOxXakerxOx
26.12.2018
12:34:52
Как запарсить sec на сайте "<p class="color-green f22 remain" sec="1545830893">-</p>"

Google
Alex
26.12.2018
12:35:49
да, действтиельно вызов sys.exit() из функции, которая выполняется в multiprocessing.Pool приводит к зависанию на этапе подчистки ресурсов пула.

Игорь
26.12.2018
12:36:55
Он тут желчью весь чатик забрызгал. Пусть лесом идет может?
Я, вот, честно, ни с кем ругаться не собирался. Просто, да, выбешивают шуточки в свой адрес не по теме. Всем, кто хотел помочь спасибо. Что сделать по другому можно, я знаю, придётся сделать так. Я хотел узнать именно то, что спрашивал. Именно это и ничего другого

Сергей
26.12.2018
12:38:07
где-то я такое видел, но не помню где (

Alex
26.12.2018
12:38:47
процессы в пуле случаем не через сокеты общаются с мастером? или я путаю?
через очереди, которые емнип на пайпах реализованы.

в общем судя по всему блокировка происходит где-то на попытке прочесть результат из очереди… TL;DR: выходить из процесса в пуле по sys.exit - очевидно хреновая идея.

деталей пока не знаю, интересно, но копаться в сорцах мультипроцессинга в выходной день лень

кстати это известный баг https://bugs.python.org/issue22393

Макс
26.12.2018
12:52:18
в чем описание тесткейсов делать удобно?

Сергей
26.12.2018
12:54:24
ага, вроде нашел они действительно общаются через пайпы на нижнем уровне а вообще это называется менеджерами. они спавнят свой тред и там делают черную магию вот если глянуть сюда multiprocessing.managers.BaseManager.start там есть интересный код self.shutdown = util.Finalize( self, type(self)._finalize_manager, args=(self._process, self._address, self._authkey, self._state, self._Client), exitpriority=0 ) то есть по идее перед sys.exit() надо найти этого менеджера и дернуть у него shutdown multiprocessing.managers.BaseManager._finalize_manager оно вроде что-то отправит в мастер и тогда можно грохать. чисто теоретически это должно помочь

Alex
26.12.2018
12:55:11
звучит как дичайший костыль

Сергей
26.12.2018
12:55:15
хмм, там внутри даже есть вызов process.terminate()

Alex
26.12.2018
12:55:28
проще уже exception прокинуть

Сергей
26.12.2018
12:55:38
ну да, человек просит костылей - вот, пожалуйста )

Alex
26.12.2018
12:55:43
оок

Страница 7529 из 9768