Pregunta

Tengo dos enteros en mi programa; Llamémoslos "a" y "b". Me gustaría agregarlos y obtener otro entero como resultado. Estos son Python regulares int objetos. Me pregunto; ¿Cómo los agrego con Twisted? ¿Hay un especial performAsynchronousAddition funcionar en alguna parte? ¿Necesito un Deferred? ¿Qué pasa con el reactor? ¿Está involucrado el reactor?

¿Fue útil?

Solución

Ok, para ser claro.

Twisted no hace nada sobre Tareas encuadernadas en CPU Y por una buena razón. No hay forma de hacer que un trabajo de cómputo sea atado a un trabajo más rápido reordenando subtareas; Lo único que podría hacer es agregar más recursos de cálculo; E incluso eso no funcionaría en Python debido a una sutileza de su implementación.

Twisted ofrece semántica especial y manejo de bucle de eventos en caso de que el programa se convierta "atascado"Esperando algo afuera si su control; la mayoría normalmente se ejecuta en otra máquina y se comunica con su proceso retorcido a través de una conexión de red. Dado que usted sería esperando De todos modos, Twisted te da un mecanismo para hacer más cosas mientras tanto. Es decir, Twisted proporciona concurrencia para Tareas encuadernadas de E/S

TL; DR: Twisted es para código de red. Todo lo demás es simplemente Python normal.

Otros consejos

Qué tal esto:

c = a + b

Eso debería funcionar, y no es necesario que se haga de manera asincrónica (es bastante rápido).

Buena pregunta, y retorcido (o pitón) debería tener una manera de generar al menos "A + B" de varios núcleos (en mi 8 Core i7).

Desafortunadamente, el Python Gil evita que esto suceda, lo que significa que tendrá que esperar, no solo para la tarea limitada por la CPU, sino por un núcleo haciendo el trabajo, mientras que los otros siete núcleos no están haciendo nada.

Nota: Tal vez un mejor ejemplo sería "A () + B ()", o incluso "Hecho (SQRT (A () ** B ())", etc. Pero el hecho importante es que la operación anterior bloqueará un núcleo y El Gil prácticamente evita que Python haga algo más durante esa operación, que podría ser varias EM ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top