parameters: ()
docstring: Returns a best-guess for a number of concurrent links.
docstring_summary: Returns a best-guess for a number of concurrent links.
docstring_tokens: Returns a best - guess for a number of concurrent links .
function: def GetDefaultConcurrentLinks():
      """Returns a best-guess for a number of concurrent links."""
      pool_size = int(os.environ.get("GYP_LINK_CONCURRENCY", 0))
      if pool_size:
          return pool_size
  
      if sys.platform in ("win32", "cygwin"):
          import ctypes
  
          class MEMORYSTATUSEX(ctypes.Structure):
              _fields_ = [
                  ("dwLength", ctypes.c_ulong),
                  ("dwMemoryLoad", ctypes.c_ulong),
                  ("ullTotalPhys", ctypes.c_ulonglong),
                  ("ullAvailPhys", ctypes.c_ulonglong),
                  ("ullTotalPageFile", ctypes.c_ulonglong),
                  ("ullAvailPageFile", ctypes.c_ulonglong),
                  ("ullTotalVirtual", ctypes.c_ulonglong),
                  ("ullAvailVirtual", ctypes.c_ulonglong),
                  ("sullAvailExtendedVirtual", ctypes.c_ulonglong),
              ]
  
          stat = MEMORYSTATUSEX()
          stat.dwLength = ctypes.sizeof(stat)
          ctypes.windll.kernel32.GlobalMemoryStatusEx(ctypes.byref(stat))
  
          # VS 2015 uses 20% more working set than VS 2013 and can consume all RAM
          # on a 64 GB machine.
          mem_limit = max(1, stat.ullTotalPhys // (5 * (2 ** 30)))  # total / 5GB
          hard_cap = max(1, int(os.environ.get("GYP_LINK_CONCURRENCY_MAX", 2 ** 32)))
          return min(mem_limit, hard_cap)
      elif sys.platform.startswith("linux"):
          if os.path.exists("/proc/meminfo"):
              with open("/proc/meminfo") as meminfo:
                  memtotal_re = re.compile(r"^MemTotal:\s*(\d*)\s*kB")
                  for line in meminfo:
                      match = memtotal_re.match(line)
                      if not match:
                          continue
                      # Allow 8Gb per link on Linux because Gold is quite memory hungry
                      return max(1, int(match.group(1)) // (8 * (2 ** 20)))
          return 1
      elif sys.platform == "darwin":
          try:
              avail_bytes = int(subprocess.check_output(["sysctl", "-n", "hw.memsize"]))
              # A static library debug build of Chromium's unit_tests takes ~2.7GB, so
              # 4GB per ld process allows for some more bloat.
              return max(1, avail_bytes // (4 * (2 ** 30)))  # total / 4GB
          except subprocess.CalledProcessError:
              return 1
      else:
          # TODO(scottmg): Implement this for other platforms.
          return 1
function_tokens: def GetDefaultConcurrentLinks ( ) : pool_size = int ( os . environ . get ( "GYP_LINK_CONCURRENCY" , 0 ) ) if pool_size : return pool_size if sys . platform in ( "win32" , "cygwin" ) : import ctypes class MEMORYSTATUSEX ( ctypes . Structure ) : _fields_ = [ ( "dwLength" , ctypes . c_ulong ) , ( "dwMemoryLoad" , ctypes . c_ulong ) , ( "ullTotalPhys" , ctypes . c_ulonglong ) , ( "ullAvailPhys" , ctypes . c_ulonglong ) , ( "ullTotalPageFile" , ctypes . c_ulonglong ) , ( "ullAvailPageFile" , ctypes . c_ulonglong ) , ( "ullTotalVirtual" , ctypes . c_ulonglong ) , ( "ullAvailVirtual" , ctypes . c_ulonglong ) , ( "sullAvailExtendedVirtual" , ctypes . c_ulonglong ) , ] stat = MEMORYSTATUSEX ( ) stat . dwLength = ctypes . sizeof ( stat ) ctypes . windll . kernel32 . GlobalMemoryStatusEx ( ctypes . byref ( stat ) ) # VS 2015 uses 20% more working set than VS 2013 and can consume all RAM # on a 64 GB machine. mem_limit = max ( 1 , stat . ullTotalPhys // ( 5 * ( 2 ** 30 ) ) ) # total / 5GB hard_cap = max ( 1 , int ( os . environ . get ( "GYP_LINK_CONCURRENCY_MAX" , 2 ** 32 ) ) ) return min ( mem_limit , hard_cap ) elif sys . platform . startswith ( "linux" ) : if os . path . exists ( "/proc/meminfo" ) : with open ( "/proc/meminfo" ) as meminfo : memtotal_re = re . compile ( r"^MemTotal:\s*(\d*)\s*kB" ) for line in meminfo : match = memtotal_re . match ( line ) if not match : continue # Allow 8Gb per link on Linux because Gold is quite memory hungry return max ( 1 , int ( match . group ( 1 ) ) // ( 8 * ( 2 ** 20 ) ) ) return 1 elif sys . platform == "darwin" : try : avail_bytes = int ( subprocess . check_output ( [ "sysctl" , "-n" , "hw.memsize" ] ) ) # A static library debug build of Chromium's unit_tests takes ~2.7GB, so # 4GB per ld process allows for some more bloat. return max ( 1 , avail_bytes // ( 4 * ( 2 ** 30 ) ) ) # total / 4GB except subprocess . CalledProcessError : return 1 else : # TODO(scottmg): Implement this for other platforms. return 1