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__函数创建的每个线程显式调用。