class_docstr: Creates a context to query information
  
  Example:
  
      with NVMLContext() as ctx:
          num_gpus = ctx.num_devices()
          for device in ctx.devices():
              print(device.memory())
              print(device.utilization())
docstr: Get number of devices 
docstr_tok: ["Get","number","of","devices"]
code: def num_devices(self):
      """Get number of devices"""
      c_count = c_uint()
      _check_return(
          _NVML.get_function("nvmlDeviceGetCount_v2")(byref(c_count))
      )
      return c_count.value
  
imports: import threading
  from ctypes import CDLL, POINTER, Structure, byref, c_uint, c_ulonglong, create_string_buffer
label_desc: Use image node_id 3 for calling the NVMLContext obj's underlying member method code with example usage: obj.num_devices() and returns: c_count