π ΠΠ°ΠΊ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠ΅ΠΊΠ° python ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ
import sys
sys.setrecursionlimit(10000)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π³Π»ΡΠ±ΠΈΠ½Ρ ΡΠ΅ΠΊΡΡΡΠΈΠΈ ΡΡΠ΅ΠΊΠ° ΡΠ°Π²Π½ΠΎΠΉ 10000. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π²Π°ΡΠΈΠΌΠΈ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡΠΌΠΈ. ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠ΅ΠΊΠ° Python.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠ΅ΠΊΠ° Π² Python
Python - ΡΡΠΎ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠ°ΠΌΡΡΡΡ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΡΠ΅ΠΊ Π²ΡΠ·ΠΎΠ²ΠΎΠ². Π‘ΡΠ΅ΠΊ - ΡΡΠΎ ΠΎΠ±Π»Π°ΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . ΠΠ΄Π½Π°ΠΊΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠ΅ΠΊΠ° Python Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ° Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π³Π»ΡΠ±ΠΎΠΊΠΎ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
1. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ sys.setrecursionlimit()
Π Python Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ sys.setrecursionlimit(), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π³Π»ΡΠ±ΠΈΠ½Ρ ΡΠ΅ΠΊΡΡΡΠΈΠΈ. ΠΠ»ΡΠ±ΠΈΠ½Π° ΡΠ΅ΠΊΡΡΡΠΈΠΈ - ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π³Π»ΡΠ±ΠΈΠ½Π° ΡΠ΅ΠΊΡΡΡΠΈΠΈ Π² Python ΡΠ°Π²Π½Π° 1000.
ΠΡΠΈΠΌΠ΅Ρ:
import sys
sys.setrecursionlimit(1500)
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π³Π»ΡΠ±ΠΈΠ½Ρ ΡΠ΅ΠΊΡΡΡΠΈΠΈ ΡΠ°Π²Π½ΠΎΠΉ 1500.
2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ resource.setrlimit()
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠ΅ΠΊΠ° Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π±ΠΎΠ»ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΌΠΎΠ² Π΄Π°Π½Π½ΡΡ , Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ resource. ΠΠ΅ΡΠΎΠ΄ resource.setrlimit() ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠ΅ΠΊΠ° Π²ΡΠ·ΠΎΠ²ΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ:
import resource
soft_limit, hard_limit = resource.getrlimit(resource.RLIMIT_STACK)
resource.setrlimit(resource.RLIMIT_STACK, (hard_limit, hard_limit))
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΌΡΠ³ΠΊΠΈΠΉ ΠΈ ΠΆΠ΅ΡΡΠΊΠΈΠΉ Π»ΠΈΠΌΠΈΡΡ ΡΡΠ΅ΠΊΠ° Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΠ°Π²Π½ΡΠΌΠΈ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
3. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ulimit ΠΊΠΎΠΌΠ°Π½Π΄Ρ
Π ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Linux ΠΈ macOS ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ulimit Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠ΅ΠΊΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠ΅ΠΊΠ° Π΄ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
ulimit -s unlimited
ΠΠ°Π½Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π±Π΅Π·Π»ΠΈΠΌΠΈΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠ΅ΠΊΠ° Π²ΡΠ·ΠΎΠ²ΠΎΠ².
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π£Π²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΡΠ΅ΠΊΠ° Π² Python ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ Π² ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ° Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π³Π»ΡΠ±ΠΎΠΊΠΎ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ sys.setrecursionlimit(), ΠΌΠΎΠ΄ΡΠ»Ρ resource ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ulimit Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΡΠ΅ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π±ΡΠ΄ΡΡΠ΅ ΠΎΡΡΠΎΡΠΎΠΆΠ½Ρ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ.