как на этих ваших питонах сделать портабельный timeout?
2017-06-06 13:59:50

Участники:
@qnikst - 9, @solhov - 7, @ndtimofeev - 1, @segfault - 1, @blaze - 1

@segfault
это как NominalDiffTime в хаскеле?
#2873752/1 2017-06-06 14:14:23
@qnikst
это как `System.Timeout.timeout`
#2873752/2 → /1 2017-06-06 15:00:01
@solhov
select?
#2873752/3 → /2 2017-06-06 15:32:13
@qnikst
как он мне поможет ограничить по времени чужой код? ну и сигналами можно кидаться но это же не портабельно?
#2873752/4 → /3 2017-06-06 15:39:04
@solhov
что-то ты странное спросил, в результате. давай еще раз, но без ссылок на хаскель (а то там читается -- таймаут на ввод-вывод, а на самом деле может что-то иное)
#2873752/5 → /4 2017-06-06 15:45:13
@qnikst
тайм-аут на время выполнения операции, если она дольше выполняется то оборвать и вернуть об этом информацию
#2873752/6 → /5 2017-06-06 15:46:50
@solhov
какой операции? ввода-вывода?
#2873752/7 → /6 2017-06-06 15:48:37
@qnikst
произвольный питонокод
#2873752/8 → /7 2017-06-06 15:49:05
@solhov
я думаю корректно невозможно. я и про хаскель сомневаюсь, кстати. с эрлангом такое сотворить наверное можно. может быть с jvm (поскольку машина блоее-менее описана). питоновская же вроде как не описана, т.е. прерывать выполнение заипешься.
#2873752/9 → /8 2017-06-06 15:51:53
@qnikst
в хаскель можно, там есть нюансы с сишными вызовами, они должны адекватно себя вести, а так всё норм, и с неаллоцирующим кодом, который нельзя прервать, но такой написать ещё умудриться надо
#2873752/10 → /9 2017-06-06 15:54:35
@solhov
ну не знаю, если хаскель странслировался до машинного кода и там у тебя тупо цикл крутится до морковкиного загвения -- как ты его прерывать будешь? ну не обращается код никуда при этом. или там к в эрланге -- все равно шедулер хаскеля иногда дергается из кода?
#2873752/11 → /10 2017-06-06 15:57:46
@qnikst
на аллокациях он смотрит не пришло ли исключение, поэтому сишный код и неаллоцирующие циклы это проблема. первые в принципе обходится посланием сигнала, но это сносит бошку сишникам коду иногда (в libvirt например), второе решается вставкой yield (флаг компилятора), но там эвристики. в общем оно почти работает, чуть хуже чем Erlang там вротой проблемы нет
#2873752/12 → /11 2017-06-06 16:12:34
@blaze
Надежно - никак. Если он застрял в uninterruptible sleep, то сделать ничего нельзя, сисколл просто не вернется.
#2873752/13 → /8 2017-06-06 16:22:56
@qnikst
ну на это пофиг
#2873752/14 → /13 2017-06-06 16:26:07
@qnikst
в смысле не поддерживать это нормально
#2873752/15 → /14 2017-06-06 16:26:39
@solhov
с чего бы сигналу прекратить выполнение сишного кода?
#2873752/16 → /12 2017-06-06 16:27:25
@ndtimofeev
Сишный код может через жопу обробатывать сигналы.
#2873752/17 → /16 2017-06-06 16:59:30
@solhov
это вообще не в тему замечание.
#2873752/18 → /17 2017-06-06 17:00:28
@qnikst
хм.. справедливо.
#2873752/19 → /16 2017-06-06 17:58:42