无法将字符串转换为浮点数。

3

我需要从服务器获取GPU的性能。

这可以通过使用nvidia-smi来实现。

  def getGpuPower(self):
      splitedGpuPower = os.popen("nvidia-smi --query-gpu=power.draw --format=csv,noheader,nounits").read().replace("\n", ",").split(",")
      for x in range(4):
        self.gpuPower += float(splitedGpuPower[x])
      return self.gpuPower

我需要一个像250,00这样的浮点数
实际上我得到的是
(  File "test1.py", line 22, in getGpuPower
    self.gpuPower += float(splitedGpuPower[x])
ValueError: could not convert string to float:)

输出结果如下。
$ nvidia-smi --query-gpu=power.draw --format=csv,noheader,nounits

8.50
7.43
11.04

你能打印 splitedGpuPower[x] 并检查它是否实际上是一个浮点数吗? - Devesh Kumar Singh
请展示 nvidia-smi --query-gpu=power.draw --format=csv,noheader,nounits 命令的输出。 - AKX
1
你的字符串为空,这就是为什么你无法将其转换为浮点数:float("") 实际上就是你在这里做的。 - cglacet
你需要在splitedGpuPower上进行迭代,而不是假设一个范围,并跳过空字符串。如果我的答案有意义,请检查它! - Devesh Kumar Singh
1个回答

2
假设你的输出结果是 os.popen("nvidia-smi --query-gpu=power.draw --format=csv,noheader,nounits").read()8.50\n7.43\n11.04,使用以下代码应该可以解决问题。
def getGpuPower():
      #Split on newline
      splitedGpuPower = "8.50\n7.43\n11.04".split("\n")
      gpuPower = 0
      #Iterate through the list
      for power in splitedGpuPower:
          #If string is non empty, convert to float and add
          if power.strip() != '':
              gpuPower += float(power)
      print(gpuPower)

最终输出结果为:
getGpuPower()
#26.97

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接