как получить только имена файлов из базы данных (база данных MySQL) .. чтобы этот конкретный человек мог просматривать этот файл [дубликат]

resource.setrlimit также необходимо использовать для увеличения размера стека и предотвращения segfault

Ядро Linux ограничивает стек процессов.

Python хранит локальные переменные в стеке интерпретатор, и поэтому рекурсия занимает пространство стека интерпретатора.

Если интерпретатор Python пытается преодолеть ограничение стека, ядро ​​Linux segfaults.

Размер ограничения стека равен управляется системными вызовами getrlimit и setrlimit.

Python предлагает доступ к этим системным вызовам через модуль resource.

import resource
import sys

print resource.getrlimit(resource.RLIMIT_STACK)
print sys.getrecursionlimit()
print

# Will segfault without this line.
resource.setrlimit(resource.RLIMIT_STACK, [0x10000000, resource.RLIM_INFINITY])
sys.setrecursionlimit(0x100000)

def f(i):
    print i
    sys.stdout.flush()
    f(i + 1)
f(0)

Конечно, если вы держите увеличивая уровень ulimit, ваша операционная система закончится, что либо остановит ваш компьютер на остановке из-за безумия подкачки, либо убьет Python через OOM Killer.

Из bash вы можете увидеть и установить ограничение стека ( в kb) с:

ulimit -s
ulimit -s 10000

Значение по умолчанию для меня равно 8Mb.

См. также:

Проверено на Ubuntu 16.10, Python 2.7.12.

-1
задан Nissar lone 26 March 2019 в 17:29
поделиться