403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.216.146
Web Server : Microsoft-IIS/10.0
System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64
User : IUSR ( 0)
PHP Version : 8.3.28
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /Python314/Lib/test/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /Python314/Lib/test/_test_gc_fast_cycles.py
# Run by test_gc.
from test import support
import _testinternalcapi
import gc
import unittest

class IncrementalGCTests(unittest.TestCase):

    # Use small increments to emulate longer running process in a shorter time
    @support.gc_threshold(200, 10)
    def test_incremental_gc_handles_fast_cycle_creation(self):

        class LinkedList:

            #Use slots to reduce number of implicit objects
            __slots__ = "next", "prev", "surprise"

            def __init__(self, next=None, prev=None):
                self.next = next
                if next is not None:
                    next.prev = self
                self.prev = prev
                if prev is not None:
                    prev.next = self

        def make_ll(depth):
            head = LinkedList()
            for i in range(depth):
                head = LinkedList(head, head.prev)
            return head

        head = make_ll(1000)

        assert(gc.isenabled())
        olds = []
        initial_heap_size = _testinternalcapi.get_tracked_heap_size()
        for i in range(20_000):
            newhead = make_ll(20)
            newhead.surprise = head
            olds.append(newhead)
            if len(olds) == 20:
                new_objects = _testinternalcapi.get_tracked_heap_size() - initial_heap_size
                self.assertLess(new_objects, 27_000, f"Heap growing. Reached limit after {i} iterations")
                del olds[:]


if __name__ == "__main__":
    unittest.main()

Youez - 2016 - github.com/yon3zu
LinuXploit