📜  Python程序的输出|组 16(螺纹)

📅  最后修改于: 2022-05-13 01:56:10.939000             🧑  作者: Mango

Python程序的输出|组 16(螺纹)

1)以下程序的输出是什么?

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) 线程 ID = 100,线程名称 = GFG
线程 ID = 101,线程名称 = 极客
线程 ID = 102,线程名称 = GeeksforGeeks
b) 线程 ID = 100,线程名称 = GFG
线程 ID = 101,线程名称 = 极客
线程 ID = 102,线程名称 = GeeksforGeeks
出口
c) 编译错误
d) 运行时错误

Ans. (a)

说明:这是死锁的一个例子。每个线程创建自己的屏障并在该屏障上调用 .wait()函数。

2)以下哪一项不是以下程序的输出?

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 退出
b) 退出 Geeks GeeksforGeeks GFG
c) GFG 退出 GeeksforGeeks Geeks
d) 以上都不是



Ans. (d)

说明:在线程上调用 start() 方法将线程移动到就绪状态。调度线程是线程调度程序的责任。因此,可以随时调度特定线程。

3)以下程序的输出是什么?

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) GFG Geeks GeeksforGeeks 退出
b) 编译错误
c) 由于运行时错误,程序将在中间暂停
d) 这些都不是

Ans. (c)

说明:无法在尚未开始执行的线程上调用 join() 方法。

4)以下程序的输出是什么?

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()

一)66
乙) 67
c) 编译错误
d) 运行时错误

Ans. (d)

说明:每个线程在内存中都有自己的空间。因此,对于每个线程,thread1 和 thread2,变量 temp 未声明,因为 temp 未在线程的 run 方法中定义。

5)以下程序的输出是什么?

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()

一)100
b) 编译错误
c) 运行时错误
d) 这些都不是

Ans. (c)

说明: thread.__init__() 必须由在 __init__函数创建的每个线程显式调用。