繁体   English   中英

如何为此程序优化python中的最佳性能?

[英]How to optimize the best in python for this program with good performance?

我的应用程序有一个BIG JSON文件(如下所示),其中包含各种变量,其值分别为字符串和整数。 我想读取此文件并将其存储在不同的类变量中以进行进一步处理。 这些类变量将根据功能而改变。 我想知道进一步优化以下代码的任何想法。 在下面的代码中,我明确地复制了数据,而没有任何列表理解或任何最佳技术。 任何避免将数据复制为config.ID = str(self.data [“ id”]),config.ACTIVE = int(self.data [“ isActive”])的想法,并采取一种有效的方法(如果我有1000个变量,需要写1000行。

read_con.py
-----------

import json

class config:

  ID=None
  ACTIVE=None
  AGE=None
  NAME=None
  GEN=None
  COM=None
  EMAIL=None

  def __init__(self):
     self.data = {}

  def read_config_data(self, cfile):
     try:
         with open(cfile, 'r') as cd:
             self.data = json.load(cd)

     except Exception:
         print("Error in Read  file")
         self.data = {}

     else:
        # HOW TO AVOID COPY OF DATA AS BELOW.
        config.ID =str(self.data["id"])
        config.ACTIVE=int(self.data["isActive"])
        config.AGE=int(self.data["age"])
        config.NAME=str(self.data["name"])
        config.GEN=str(self.data["gender"])
        config.COM=str(self.data["company"])
        config.EMAIL=str(self.data["email"])

  def use_variables_modify_based_on_request(self):
       config.AGE=45
       config.ACTIVE=8
       config.EMAIL="x@gmail.com"

  def printvalues(self):
       print config.ID, config.ACTIVE, config.AGE, config.NAME, config.EMAIL

if __name__ == "__main__":
  obj = config()
  obj.read_config_data("sample.json")
  obj.printvalues()
  # Modifying the values of class variables in different functions.
  obj.use_variables_modify_based_on_request()
  obj.printvalues()



sample.json  file
-----------------

{
      "id": "59761c233d8d0",
      "isActive": 1,
      "age": 24,
      "name": "Kirsten Sellers",
      "gender": "female",
      "company": "EMERGENT",
      "email": "kirstensellers@emergent.com"
}

代替这个:

 ...
 else:
    # HOW TO AVOID COPY OF DATA AS BELOW.
    config.ID =str(self.data["id"])
    config.ACTIVE=int(self.data["isActive"])
    config.AGE=int(self.data["age"])
    config.NAME=str(self.data["name"])
    config.GEN=str(self.data["gender"])
    config.COM=str(self.data["company"])
    config.EMAIL=str(self.data["email"])
 ... 

做这个:

...
else:
    for key, value in self.data.items():
        setattr(config, key.upper(), value)
...

(因为值已经是适当的类型,所以不需要strint调用)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM