Salida del programa Python | Juego 16 (Hilos)

1) ¿Cuál es la salida del siguiente programa?

import threading
  
barrier = threading.Barrier(4)
  
class thread(threading.Thread):
    def __init__(self, thread_ID, thread_name):
        threading.Thread.__init__(self)
        self.thread_ID = thread_ID
        self.thread_name = thread_name
    def run(self):
        print("ThreadID = " + str(self.thread_ID) + ", ThreadName = " + 
self.thread_name + "\n")
        try:
            barrier = threading.Barrier(4)
            barrier.wait()
        except:
            print("barrier broken")
thread1 = thread(100, "GFG")
thread2 = thread(101, "Geeks")
thread3 = thread(102, "GeeksforGeeks")
  
thread1.start()
thread2.start()
thread3.start()
  
barrier.wait()
  
print("Exit")

a) ThreadID = 100, ThreadName = GFG
ThreadID = 101, ThreadName = Geeks
ThreadID = 102, ThreadName = GeeksforGeeks
b) ThreadID = 100, ThreadName = GFG
ThreadID = 101, ThreadName = Geeks
ThreadID = 102, ThreadName = GeeksforGeeks
Salir
c) Compilación error
d) Error de tiempo de ejecución

Ans. (a)

Explicación: Este es un ejemplo de interbloqueo. Cada subproceso crea su propia barrera y llama a la función .wait() en esa barrera.

2) ¿Cuál de los siguientes NO es el resultado del siguiente programa?

import threading
  
class thread(threading.Thread):
    def __init__(self, thread_ID, thread_name):
        threading.Thread.__init__(self)
        self.thread_ID = thread_ID
        self.thread_name = thread_name
    def run(self):
        print(self.thread_name)
         
thread1 = thread(100, "GFG ")
thread2 = thread(101, "Geeks ")
thread3 = thread(102, "GeeksforGeeks ")
  
thread1.start()
thread2.start()
thread3.start()
  
print("Exit")

a) GFG Geeks GeeksforGeeks Exit
b) Exit Geeks GeeksforGeeks GFG
c) GFG Exit GeeksforGeeks Geeks
d) Ninguno de los anteriores

Ans. (d)

Explicación: Llamar al método start() en un subproceso mueve el subproceso al estado listo. Es responsabilidad del programador de subprocesos programar el subproceso. Por lo tanto, un hilo en particular se puede programar en cualquier instante.

3) ¿Cuál es la salida del siguiente programa?

import threading
  
class thread(threading.Thread):
    def __init__(self, thread_ID, thread_name):
        threading.Thread.__init__(self)
        self.thread_ID = thread_ID
        self.thread_name = thread_name
    def run(self):
        print(self.thread_name)
         
thread1 = thread(100, "GFG ")
thread2 = thread(101, "Geeks ")
thread3 = thread(102, "GeeksforGeeks ")
  
thread = []
thread.append(thread1)
thread.append(thread2)
thread.append(thread3)
  
thread1.start()
thread2.start()
for thread in thread:
    thread.join()
      
thread3.start()
  
print("Exit")

a) Salida de GFG Geeks GeeksforGeeks
b) Error de compilación
c) El programa se detendrá debido a un error de tiempo de ejecución
d) Ninguno de estos

Ans. (c)

Explicación: el método join() no se puede llamar en un subproceso que aún no ha comenzado su ejecución.

4) ¿Cuál es la salida del siguiente programa?

import threading
  
i = 5
  
class thread(threading.Thread):
    def __init__(self, thread_ID, thread_name):
        threading.Thread.__init__(self)
        self.thread_ID = thread_ID
        self.thread_name = thread_name
    def run(self):
        i = i + 1
        print(i)
          
thread1 = thread(100, "GFG ")
thread2 = thread(101, "Geeks")
  
thread1.start()
thread2.start()

a) 66
b) 67
c) Error de compilación
d) Error de ejecución

Ans. (d)

Explicación: Cada subproceso tiene su propio espacio reservado en la memoria. Entonces, para cada subproceso, subproceso1 y subproceso2, la variable temp no se declara ya que temp no está definida dentro del método de ejecución del subproceso.

5) ¿Cuál es la salida del siguiente programa?

import threading
  
class thread(threading.Thread):
    def __init__(self, thread_ID):
        self.thread_ID = thread_ID
    def run(self):
        print(self.thread_ID)
          
thread1 = thread(100)
  
thread1.start()

a) 100
b) Error de compilación
c) Error de tiempo de ejecución
d) Ninguno de estos

Ans. (c)

Explicación: thread.__init__() debe ser llamado explícitamente por cada uno de los subprocesos que se crean dentro de la función __init__.

Este artículo es una contribución de Mayank Kumar . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *