Я решил этот совершенно другой маршрут (потому что я торопился и не хотел реализовывать новый HtmlHelper):
Я завернул свой Partial View в большом if-else:
@if ((bool)ViewData["ShouldRenderScripts"] == true){
// Scripts
}else{
// Html
}
Затем я дважды вызывал Partial с пользовательской ViewData:
@Html.Partial("MyPartialView", Model,
new ViewDataDictionary { { "ShouldRenderScripts", false } })
@section scripts{
@Html.Partial("MyPartialView", Model,
new ViewDataDictionary { { "ShouldRenderScripts", true } })
}
Проверьте resource.setrlimit () . Он работает только в системах Unix, но похоже, что это может быть то, что вы ищете, так как вы можете выбрать максимальный размер кучи для вашего процесса и детей вашего процесса с параметром resource.RLIMIT_DATA.
EDIT : Добавление примера:
import resource
rsrc = resource.RLIMIT_DATA
soft, hard = resource.getrlimit(rsrc)
print 'Soft limit starts as :', soft
resource.setrlimit(rsrc, (1024, hard)) #limit to one kilobyte
soft, hard = resource.getrlimit(rsrc)
print 'Soft limit changed to :', soft
Я не уверен, что ваш вариант использования в точности, но возможно, вам нужно установить ограничение на размер стека вместо resouce.RLIMIT_STACK. Пройдя этот предел, вы отправите сигнал SIGSEGV вашему процессу, и для его обработки вам потребуется использовать альтернативный стек сигналов, как описано в man-странице setrlimit Linux . Я не уверен, что sigaltstack реализован на python, так что это может оказаться затруднительным, если вы хотите оправиться от перехода по этой границе.
Посмотрите на ulimit . Он позволяет устанавливать квоты ресурсов. Возможно, также нужны соответствующие настройки ядра.
/etc/security/limits.conf
- лучшее место для установки лимитов. ulimit
- это только функция оболочки Bash.
– Jochen Ritzel
22 February 2010 в 01:32