У меня есть два класса.Один класс создает модель (скажем, класс A) (это функция, требующая времени, поэтому для устранения этой задержки мне нужно использовать библиотеку клиент-сервер GraphPipe).
Другой класс (скажем, класс B) взят из Graphpipe, этокласс получает запрос от клиента, использует модель, сгенерированную для класса 1, и возвращает ответ клиенту.
Я звоню в класс А по основной функции и обучаю модель.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()