python - 从另一个类调用函数并使用另一个类对象
问题描述
我有两节课。一个类创建模型(比如说 A 类)(这是耗时功能,所以要消除这个时间延迟,我需要使用 GraphPipe 客户端服务器库)。
另一个类(比如说 B 类)来自 Graphpipe,这个类接收来自客户端的请求,使用生成到类 1 的模型并将响应返回给客户端。
我在主函数中调用 A 类并接受模型训练。obj
是对象吗。
目前的问题是,classify_demo
在MyDict
所以我不能从GPHandler
课堂上调用它。
谁能帮助我以标准编程方式管理这种情况?
让我知道是否有任何不清楚或对我有疑问的地方。
这是代码 -
class MyDict(dict):
def __init__(self):
self.train()
def train(self):
retrain = False
# Load traind data
# if not retrain and os.path.isfile(CDATA_FILE):
print("Loading pickle")
pos, neg, totals = pickle.load(open(CDATA_FILE,'rb'),encoding='latin1')
print("Pickle loaded ")
return
def classify_demo(self, input_data):
final_result = {}
data = json.loads(input_data)
text = data["text"]
try:
words = set(word for word in self.negate_sequence(text) if word in pos or word in neg)
flag, confidence = self.classify2(text)
if confidence > 0.5:
sentiment = "Positive" if flag else "Negative"
else:
sentiment = "Neutral"
conf = "%.4f" % self.percentage_confidence(confidence)
final_result['sentiment'] = sentiment
final_result['confidence'] = conf
return json.dumps(final_result)
except:
import traceback
# print traceback.format_exc()
print("There is some error, please retry with different input")
class GPHandler(server.BaseHTTPRequestHandler):
def do_POST(self):
inp = self.rfile.read(int(self.headers['Content-Length']))
obj = convert.deserialize_request(inp).input_tensors
d = obj[0].tostring()
text = str(d)
query = {'text':text}
result = obj.classify_demo(json.dumps(query))
print(result)
outp = convert.serialize_infer_response(obj)
self.send_response(200)
self.end_headers()
self.wfile.write(outp)
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument("--port", default=10000, help="TCP port", type=int)
args = parser.parse_args()
server_address = ('', args.port)
obj = MyDict()
httpd = server.HTTPServer(server_address, GPHandler)
print('Starting graphpipe identity server on port %d...' % args.port)
while(True):
httpd.handle_request()
解决方案
您可以使用装饰器classify_demo
将其定义为静态方法。@staticmethod
因此,在GPGHandler
课堂上,您可以直接调用MyDict.classify_demo(json.dumps(query))
.
不幸的是,我觉得你的问题不是很清楚。也许你应该澄清一点。
推荐阅读
- angular - 如何通过路径识别路线
- php - 在 WooCommerce 中确定产品类型 - 致命错误:在 null 上调用成员函数 is_type()
- ssl - 在需要使用客户端证书进行身份验证的 VS19 中添加服务引用
- windows - 为什么 npe 将 miktex-texworks.exe 检测为病毒?
- docker - 为 elasticsearch 注册基于 HDFS 的快照存储库时出现连接被拒绝错误
- sql - SQL SERVER - 选择下一行值最多 5 个字符,然后用新字符替换第一个字符
- r - 增加时间序列的方差?
- javascript - 为什么“resizeTo”不起作用
- javascript - 禁用时如何更改material-ui滑块拇指样式
- php - 如何进行代码重构以减少 laravel 中的类似代码?