Как добавить два целых числа вместе с Twisted? - программирование
Подтвердить что ты не робот

Как добавить два целых числа вместе с Twisted?

У меня есть две целые числа в моей программе; назовите их "a" и "b". Я хотел бы добавить их вместе и получить другое целое число. Это обычные объекты Python int. Мне любопытно; как добавить их вместе с Twisted? Есть ли специальная функция performAsynchronousAddition где-то? Мне нужен Deferred? Как насчет реактора? Включен ли реактор?

4b9b3361

Ответ 1

ОК, чтобы быть понятным.

Twisted ничего не делает о связанных задачах cpu и не без оснований. нет никакого способа сделать задачу вычисления вычислений быстрее, переупорядочивая подзадачи; единственное, что вы могли бы сделать, это добавить дополнительные вычислительные ресурсы; и даже это не сработает на питоне из-за тонкости его реализации.

Twisted предлагает специальную семантику и обработку цикла событий в случае, если программа будет "застревать", ожидая чего-то снаружи, если ее контроль; обычно это процесс, выполняющийся на другой машине, и связь с вашим витым процессом по сетевому соединению. Так как вы все равно будете ждать, скрученный даст вам механизм, позволяющий получить больше вещей за это время. То есть, twisted предоставляет concurrency для связанных с I/O задач

tl; dr: twisted для сетевого кода. Все остальное - это просто обычный питон.

Ответ 2

Как насчет этого:

c = a + b

Это должно работать, и это не нужно делать асинхронно (довольно быстро).

Ответ 3

Хороший вопрос, и Twisted (или Python) должен иметь способ, по крайней мере, создать "a + b" из нескольких ядер (на моем 8-ядерном i7).

К сожалению, Python GIL предотвращает это, что означает, что вам придется ждать не только для задачи с привязкой к процессору, но и для одного ядра, выполняющего задание, в то время как семь других ящиков ничего не делают.

Примечание. Может быть, лучшим примером может быть "a() + b()" или даже "факт" (sqrt (a() ** b()) "и т.д., но важным фактом является то, что выше операция блокирует одно ядро ​​и GIL в значительной степени препятствуют Python делать что-либо еще во время этой операции, которая может составлять несколько мс...