##// END OF EJS Templates
util: add a 'nogc' decorator to disable the garbage collection...
Pierre-Yves David -
r23495:b25f07cb default
parent child Browse files
Show More
@@ -20,6 +20,7 b' import errno, shutil, sys, tempfile, tra'
20 20 import re as remod
21 21 import os, time, datetime, calendar, textwrap, signal, collections
22 22 import imp, socket, urllib
23 import gc
23 24
24 25 if os.name == 'nt':
25 26 import windows as platform
@@ -544,6 +545,28 b' def always(fn):'
544 545 def never(fn):
545 546 return False
546 547
548 def nogc(func):
549 """disable garbage collector
550
551 Python's garbage collector triggers a GC each time a certain number of
552 container objects (the number being defined by gc.get_threshold()) are
553 allocated even when marked not to be tracked by the collector. Tracking has
554 no effect on when GCs are triggered, only on what objects the GC looks
555 into. As a workaround, disable GC while building complexe (huge)
556 containers.
557
558 This garbage collector issue have been fixed in 2.7.
559 """
560 def wrapper(*args, **kwargs):
561 gcenabled = gc.isenabled()
562 gc.disable()
563 try:
564 return func(*args, **kwargs)
565 finally:
566 if gcenabled:
567 gc.enable()
568 return wrapper
569
547 570 def pathto(root, n1, n2):
548 571 '''return the relative path from one place to another.
549 572 root should use os.sep to separate directories
General Comments 0
You need to be logged in to leave comments. Login now