cpu.py 714 B

123456789101112131415161718192021222324252627282930
  1. import math
  2. import re
  3. import os
  4. CPU_COUNT = os.cpu_count()
  5. NUMBER_REGEX = re.compile(r"^[1-9][0-9]$")
  6. FLOAT_REGEX = re.compile(r"^[0-9]+\.[0-9]+$")
  7. MILI_CPU_REGEX = re.compile(r"^[0-9]+m$")
  8. def transform_cpu(cpu) -> int:
  9. result = 2
  10. if NUMBER_REGEX.match(cpu):
  11. result = int(cpu)
  12. elif FLOAT_REGEX.match(cpu):
  13. result = int(math.ceil(float(cpu)))
  14. elif MILI_CPU_REGEX.match(cpu):
  15. num = int(cpu[:-1])
  16. num = num / 1000
  17. result = int(math.ceil(num))
  18. if CPU_COUNT is not None:
  19. # Do not exceed the actual CPU count
  20. result = min(result, CPU_COUNT)
  21. if int(result) == 0:
  22. result = CPU_COUNT if CPU_COUNT else 2
  23. return int(result)