224 votos

time.sleep - Duerme el hilo o el proceso?

En Python para el *nix, time.sleep() bloquea el hilo o el proceso?

211voto

Nick Bastin Puntos 12627

Bloquea el hilo. Si nos fijamos en los Módulos / timemodule.c en la fuente de Python, verás que en la llamada a floatsleep() , la parte sustantiva de la operación de desconexión automática está envuelto en un Py_BEGIN_ALLOW_THREADS y Py_END_ALLOW_THREADS bloquear, permitiendo que otros hilos para continuar ejecutarse mientras la actual duerme. También puede probar esto con un programa python simple:

 import time
from threading import Thread

class worker(Thread):
    def run(self):
    	for x in xrange(0,11):
    		print x
    		time.sleep(1)

class waiter(Thread):
    def run(self):
    	for x in xrange(100,103):
    		print x
    		time.sleep(5)

def run():
    worker().start()
    waiter().start()
 

¿Qué va a imprimir:

 >>> thread_test.run()
0
100
>>> 1
2
3
4
5
101
6
7
8
9
10
102
 

31voto

Zach Burlingame Puntos 7232

Se acaba de dormir el hilo, salvo en el caso en que su aplicación tiene un solo hilo, en cuyo caso se va a dormir el hilo y con eficacia el proceso también.

La documentación de python en el sueño no especifica esto, sin embargo, por lo que sin duda puedo entender la confusión!

http://docs.python.org/2/library/time.html

14voto

finnw Puntos 24592

Sólo el hilo.

5voto

Corey Goldberg Puntos 15625

sí, de acuerdo con Corpulento.

El hilo se bloquea, pero el proceso todavía está vivo.

En una aplicación de un solo subproceso, esto significa que todo está bloqueado durante el sueño. En una aplicación multiproceso, sólo el hilo que 'dormir' explícitamente bloqueará y los otros subprocesos todavía funcionan dentro del proceso.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X