Вопрос

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

Это было полезно?

Решение

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

Свигал ничего не делает с Задачи процессора И не по уважительной причине. Там нет способа сделать работу по вычислительному решению, выполнившись быстрее, переупорядочивая подзадачи; Единственное, что вы могли бы сделать, это добавить больше вычислительных ресурсов; И даже это не сработает в Python из -за тонкости его реализации.

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

TL; DR: Twisted для сетевого кода. Все остальное просто нормальный питон.

Другие советы

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

c = a + b

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top