Discusión sobre el artículo "Simulación de mercado (Parte 13): Sockets (VII)"

 

Artículo publicado Simulación de mercado (Parte 13): Sockets (VII):

Cuando tú desarrollas algo, ya sea en xlwings o en cualquier otro paquete que nos permita leer y escribir directamente en Excel, en realidad deberías notar que todos los programas, funciones o procedimientos se ejecutan y luego finalizan su tarea. No permanecen allí dentro de un bucle, y, por más que intentes hacer las cosas de otra forma.

En el artículo anterior, «Simulación de mercado (Parte 12): Sockets (VI)», creamos un servidor en Python capaz de responder a varios clientes. Este funcionaba gracias al uso de threads. Creo que quedó clara la idea básica de cómo funciona un thread. Pero, sobre todo, espero que hayas logrado entender cómo un servidor consigue, en cierto modo, hacer funcionar un pequeño chat. La finalidad de estas explicaciones sobre los sockets no es enseñarlo todo sobre ellos. Lo que queremos y necesitamos es que comprendas cómo funcionan los sockets. Este conocimiento será necesario más adelante, en el sistema de repetición/simulador.

Pero, aunque el servidor en Python esté funcionando para que varios clientes puedan utilizarlo, no está diseñado para usarlo en Excel. Es decir, si usas xlwings para integrar este servidor en Excel, tendrás problemas de interacción con Excel. Pero ¿por qué, si estamos usando threads para no bloquear la ejecución del código?

Esta es una cuestión un poco complicada de observar y notar. Bueno, al menos para quien tiene menos experiencia en la forma en que un programa usa otro que no forma parte de él. Tal vez esta frase haya quedado un poco confusa, pero intentemos entenderla. Cuando usamos un script en VBA dentro de Excel, en realidad estamos ejecutando un programa. Si este script llama a alguna otra aplicación, Excel suele esperar a que esa aplicación termine. Pero esto no siempre ocurre. Para evitar que Excel tenga que esperar a que la aplicación finalice, puedes usar una aplicación que no esté realmente vinculada a Excel. Es decir, tendrás Excel abierto y, al mismo tiempo, otra aplicación abierta por VBA. Ambas pueden coexistir sin competir por la CPU. Sería más o menos como pedirle a Excel que abra Word. No importa si Word se queda detenido, no interferirá con Excel.


Autor: Daniel Jose

 
MetaQuotes:

Artículo publicado Simulación de mercado (Parte 13): Sockets (VII):

Autor: Daniel Jose

Gracias