Foros del Web » Programando para Internet » Python »

Threads en python

Estas en el tema de Threads en python en el foro de Python en Foros del Web. Hola. Estoy haciendo un programa con PySide(Qt) que quiero que se descarge archivos de Internet, que son bastante grandes, y que por tanto, tardan mucho ...
  #1 (permalink)  
Antiguo 03/08/2012, 14:19
 
Fecha de Ingreso: enero-2010
Ubicación: Madrid/España
Mensajes: 89
Antigüedad: 14 años, 3 meses
Puntos: 3
Threads en python

Hola. Estoy haciendo un programa con PySide(Qt) que quiero que se descarge archivos de Internet, que son bastante grandes, y que por tanto, tardan mucho en terminar. He leído que la mejor manera de que la interfaz (o el resto del programa) se congele y hacer una barra de progreso es usar threads, pero no se exactamente cómo funcionan, a pesar de haber leído el tutorial de python para todos.

¿Me podríais ayudar? Gracias por adelantado
  #2 (permalink)  
Antiguo 03/08/2012, 14:46
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Threads en python

Claro ¿en que parte te podemos ayudar?
  #3 (permalink)  
Antiguo 04/08/2012, 05:21
 
Fecha de Ingreso: enero-2010
Ubicación: Madrid/España
Mensajes: 89
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: Threads en python

Ahora mismo tengo un programa principal. Si quiero abrir un hilo, ¿He de reescribir todo el programa para que se puedan ejecutar el hilo principal y el hilo de descarga o puedo hacer que se ejecute una función en un hilo por separado sin necesidad de hacer nada más?
  #4 (permalink)  
Antiguo 04/08/2012, 10:19
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Threads en python

No es necesario reescribir todo el programa. Si ya tienes tu funcion de descargar link o algo similar entonces simplemente en lugar de llamarlo directamente creas un thread y ejecutas el thread.
  #5 (permalink)  
Antiguo 04/08/2012, 13:54
 
Fecha de Ingreso: enero-2010
Ubicación: Madrid/España
Mensajes: 89
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: Threads en python

Ah, vale, gracias. ¿pero, cómo hago que un thread ejecute esa función?
  #6 (permalink)  
Antiguo 04/08/2012, 14:58
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Threads en python

Threads en python, en libro python para todos te enseñan lo básico.
  #7 (permalink)  
Antiguo 06/08/2012, 07:52
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Threads en python

Si ya estás usando PySide, quizás quieras usar hilos Qt, ya que de por sí tu interfaz gráfica correrá en un hilo de Qt.

La última vez que probé, tuve problemas al vincular señales con slots en diferentes hilos de Python, y tuve que convertir mi programa para que utilizara hilos de Qt. Quizás no te enfrentes al mismo problema, pero tenlo en cuenta.
> http://www.diotavelli.net/PyQtWiki/T...nals_and_Slots

Opinión más o menos oficial: http://www.mail-archive.com/pyqt@riv.../msg16052.html
Cita:
A general rule of thumb might be to use QThreads if you're going to interact somehow with Qt, and use Python threads otherwise. Though I find it difficult to imagine a thread *not* interacting with Qt at all...

BTW: remember that, with Qt, you don't need threads for many tasks that are sometimes solved with threads (a prominent example is network programming)
Investiga eso
  #8 (permalink)  
Antiguo 07/08/2012, 15:57
 
Fecha de Ingreso: enero-2010
Ubicación: Madrid/España
Mensajes: 89
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: Threads en python

Cita:
Iniciado por razpeitia Ver Mensaje
Threads en python, en libro python para todos te enseñan lo básico.
Precisamente ese era el tutorial que había encontrado y no había entendido y por eso había escrito aquí
  #9 (permalink)  
Antiguo 12/08/2012, 02:14
Avatar de jhg
jhg
 
Fecha de Ingreso: marzo-2012
Mensajes: 96
Antigüedad: 12 años
Puntos: 1
Respuesta: Threads en python

Cita:
Iniciado por AlvaroG Ver Mensaje
Si ya estás usando PySide, quizás quieras usar hilos Qt, ya que de por sí tu interfaz gráfica correrá en un hilo de Qt.

La última vez que probé, tuve problemas al vincular señales con slots en diferentes hilos de Python, y tuve que convertir mi programa para que utilizara hilos de Qt. Quizás no te enfrentes al mismo problema, pero tenlo en cuenta.
> [url]http://www.diotavelli.net/PyQtWiki/Threading,_Signals_and_Slots[/url]

Opinión más o menos oficial: [url]http://www.mail-archive.com/[email protected]/msg16052.html[/url]


Investiga eso
No los conozco a fondo y por lo tanto me puedo equivocar pero coincido en lo de tenerlos en cuenta los QThreads ya que CPython cuenta con GIL (el cual no es malo como lo pintan, hace que la memoria mantenga su integridad) y con un Thread de Python solo obtendrias beneficios de velocidad en los momentos de tiempos de espera (sleep, etc) y de entrada y salida (escrituras a disco, etc), si el modulo QT esta hecho de forma segura a hilos seguramente maneje el hilo y su memoria separado y asi gane un poco más en velocidad. De todos modos estoy suponiendo, habria que probarlo.
__________________
JHG

Etiquetas: pyside, threads
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:12.