Приложение Python переместится на Apache WSGI - включение Multi-Process [duplicate]

Перекрестный продукт является классическим.

Если у вас есть миллион таких вычислений, попробуйте следующую оптимизированную версию, для которой требуется меньше половины умножений:

area = 0;
for( i = 0; i < N; i += 2 )
   area += x[i+1]*(y[i+2]-y[i]) + y[i+1]*(x[i]-x[i+2]);
area /= 2;

Я использую индекс массива для ясности. Эффективно использовать указатели. Хотя хорошие компиляторы сделают это за вас.

Полигон считается «закрытым», что означает, что вы копируете первую точку как точку с индексом N. Также предполагается, что многоугольник имеет четное число точек. Добавим дополнительную копию первой точки, если N не равно.

Алгоритм получается путем разворачивания и объединения двух последовательных итераций классического алгоритма кросс-произведения.

Я не уверен, как сравниваются два алгоритма относительно числовой точности. Мое впечатление, что вышеупомянутый алгоритм лучше классического, потому что умножение стремится восстановить потерю точности вычитания. При ограничении использования float, как и в случае с графическим процессором, это может иметь существенное значение.

EDIT: «Площадь треугольников и многоугольников 2D и 3D» описывает еще более эффективный метод

// "close" polygon
x[N] = x[0];
x[N+1] = x[1];
y[N] = y[0];
y[N+1] = y[1];

// compute area
area = 0;
for( size_t i = 1; i <= N; ++i )
  area += x[i]*( y[i+1] - y[i-1] );
area /= 2;

4
задан TIMEX 24 March 2010 в 06:26
поделиться

1 ответ

Используйте директиву WSGIDaemonProcess , чтобы поместить приложение в режим демона и указать количество процессов и потоков демона.

3
ответ дан Ignacio Vazquez-Abrams 19 August 2018 в 07:24
поделиться
Другие вопросы по тегам:

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