Каковы показатели скорости в Уотсон-НЛУ?
Я пытаюсь обработать твиты, хранящиеся в текстовом файле. Мой код читает твиты (один за другим), обрабатывает их, а затем сохраняет результаты Watson в CSV-файл. Скорость составляет около 28 твитов в минуту только. Является ли обработка файла данных причиной этой задержки?
while 1:
where = file.tell()
line = file.readline()
if not line:
print "no line found, waiting for a 1 seconds"
time.sleep(1)
file.seek(where)
else:
if (re.search('[a-zA-Z]', line)):
print "-----------------------------"
print "the line is: "
print line
print "-----------------------------"
response = natural_language_understanding.analyze(
text=line,
features=Features(
entities=EntitiesOptions(
emotion=True,
sentiment=True,
limit=2),
keywords=KeywordsOptions(
emotion=True,
sentiment=True,
limit=2)),
language='en'
)
response["tweet"] = line
print(json.dumps(response, indent=2))
with open('#DDvKXIP.csv', 'a') as csv_file:
writer = csv.writer(csv_file)
for key, value in response.items():
writer.writerow([key, value])
else:
print "--------------------------------"
print "found a line without any alphabet in it, hence not considering."
print line
print "--------------------------------"
1 ответ
Решение
Короткий ответ: вы должны поместить временные маркеры между основными частями вашего кода, чтобы определить, что является самым медленным.
Другие варианты улучшения скорости.
- Вы можете создать потоковое приложение, которое отправляет, скажем, 10-20 вызовов одновременно. Это должно увеличить вашу скорость до 280-560 твитов в минуту.
Если вы используете облегченную версию, вы должны быть уверены, что не ограничиваете себя.
- Вы можете пакетировать твиты от одного и того же пользователя и отправлять их в виде большого блока. Вместо индивидуальных звонков. Например, если вы просто пытаетесь уловить общее настроение, это может не помочь.