Сервис Nodejs останавливается автоматически

np.unique работает, сортируя сплющенный массив, а затем смотрит, равен ли каждый элемент предыдущему. Это можно сделать вручную без сглаживания:

ind = np.lexsort(a.T)
a[ind[np.concatenate(([True],np.any(a[ind[1:]]!=a[ind[:-1]],axis=1)))]]

Этот метод не использует кортежи и должен быть намного быстрее и проще, чем другие методы, приведенные здесь.

ПРИМЕЧАНИЕ. Предыдущая версия из этого не было ind ind сразу после [, что означает, что использовались неправильные индексы. Кроме того, Джо Кингтон хорошо говорит о том, что этот делает множество различных промежуточных копий. Следующий метод делает меньше, создавая отсортированную копию и затем используя ее виды:

b = a[np.lexsort(a.T)]
b[np.concatenate(([True], np.any(b[1:] != b[:-1],axis=1)))]

Это быстрее и использует меньше памяти.

Кроме того, если вы хотите найти уникальные строки в ndarray , независимо от того, сколько измерений в массиве, будут работать следующие:

b = a[lexsort(a.reshape((a.shape[0],-1)).T)];
b[np.concatenate(([True], np.any(b[1:]!=b[:-1],axis=tuple(range(1,a.ndim)))))]

Интересной оставшейся проблемой будет, если вы хотите сортировать / уникально

Edit:

Чтобы продемонстрировать разницу в скорости, я провел несколько тестов в ipython из трех различные методы, описанные в ответах. С ваш точный a, разница не слишком велика, хотя эта версия немного быстрее:

In [87]: %timeit unique(a.view(dtype)).view('<i8')
10000 loops, best of 3: 48.4 us per loop

In [88]: %timeit ind = np.lexsort(a.T); a[np.concatenate(([True], np.any(a[ind[1:]]!= a[ind[:-1]], axis=1)))]
10000 loops, best of 3: 37.6 us per loop

In [89]: %timeit b = [tuple(row) for row in a]; np.unique(b)
10000 loops, best of 3: 41.6 us per loop

При большей версии, однако, эта версия заканчивается намного быстрее:

In [96]: a = np.random.randint(0,2,size=(10000,6))

In [97]: %timeit unique(a.view(dtype)).view('<i8')
10 loops, best of 3: 24.4 ms per loop

In [98]: %timeit b = [tuple(row) for row in a]; np.unique(b)
10 loops, best of 3: 28.2 ms per loop

In [99]: %timeit ind = np.lexsort(a.T); a[np.concatenate(([True],np.any(a[ind[1:]]!= a[ind[:-1]],axis=1)))]
100 loops, best of 3: 3.25 ms per loop
0
задан Rushabh Madhu 6 March 2019 в 09:36
поделиться

1 ответ

Существует несколько решений, обеспечивающих постоянную работу вашего сервиса.

Один из них даже называется forever. Здесь у вас есть обзор, подготовленный Экспресс .

Однако для производственных услуг я рекомендую пассажира Результат почти такой же, но гораздо большей масштабируемости. Например, вы можете настроить автоматическое добавление другого экземпляра.

Почти - потому что он предназначен для обеспечения доступности HTTP, а не постоянной работы приложения.

КСТАТИ: служба останавливается, потому что у вас есть исключение исключено.

Обновление

Если вы настаиваете на forever, то: (Мы говорим о том же навсегда ?)

  • Убедитесь, что [ 112] управляется одним и тем же пользователем. forever имеет отдельных менеджеров для всех пользователей.
  • Убедитесь, что вы сохранили свои данные в том же месте. (автоматический запуск, например, cron отличается от ручного запуска (переменные в env))
  • forever имеет --pidFile - тогда очень легко проверить, работает ли процесс
  • также ps -aux | grep node должен быть твоим большим другом.

Нет, я не объединила это. Когда у меня начались проблемы, я переключился на passenger. В конце концов, я сделал это хорошо, потому что у меня есть профессиональный мониторинг, который я запустил за меньшее время, чем поиск, как объединить вышеупомянутые пункты.

0
ответ дан bato3 6 March 2019 в 09:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: