[HELP][Question] Python programs with huge recursion depth.

Правка en1, от H4wk3ye, 2019-01-22 14:10:33

So I was trying to solve few graph questions and during dfs if the graph has nodes and edges of magnitude ~10**5 python was giving run time or sigsev error even if the recursion limit is set explicitly using sys.setrecursionlimit(10**6). After googling about the stack size issues in pyhton I came across a Stackoverflow blog.

The second answer using the resource module was helpful ~~~~~ import resource, sys resource.setrlimit(resource.RLIMIT_STACK, (2**29,-1)) sys.setrecursionlimit(10**6) ~~~~~

and I was able to avoid the recursion depth issue on this question on hackerearth.

But the problem is resource module is not available on Codeforces. Even though its available on Codechef as well as hackerearth.

So I tried another module threading

    sys.setrecursionlimit(10**6)
    threading.stack_size(10**8)
    t = threading.Thread(target=main)
    t.start()
    t.join()

and its available here in codeforces as well but the issue is the memory consumption is huge if we use threading module and it sometimes even causes memory lmiit exceeded error.

The question I mentioned above on articulation point and bridges.

Solution using Resource module.

Solution using Threading module. You can see the second test case threw memory limit exceeded.

So are the Codeforces machines running a windows system as resource module is not avilable for windows according to an old comment on the stackoverflow blow.

And if you are python programmer what else do you use for programs with huge recursion depth.

Теги #python, #recursion, python3, pypy

История

 
 
 
 
Правки
 
 
  Rev. Язык Кто Когда Δ Комментарий
en3 Английский H4wk3ye 2019-01-22 14:27:23 51
en2 Английский H4wk3ye 2019-01-22 14:10:56 2 Tiny change: 'helpful \n~~~~~\n ' -> 'helpful \n\n~~~~~\n '
en1 Английский H4wk3ye 2019-01-22 14:10:33 1964 Initial revision (published)