全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页

并发编程基础专项测试

20 题 40 分钟 难度:

考察知识点

  • 多线程基础:threading模块、Thread类、线程创建与启动
  • 线程同步:Lock、RLock、Semaphore、线程安全
  • GIL机制:全局解释器锁原理、影响、规避方法
  • 线程通信:Queue、Event、Condition
1
判断题

Python的threading模块提供了创建和管理线程的功能,使用Thread类可以创建新线程,调用start()方法启动线程。

A

B

2
单选题

以下代码执行后,可能的输出顺序是?

Python
import threading

def task():
    print('线程')

t = threading.Thread(target=task)
t.start()
print('主线程')
A

线程 → 主线程(固定顺序)

B

主线程 → 线程(固定顺序)

C

线程 → 主线程 或 主线程 → 线程(顺序不确定)

D

只输出主线程

3
填空题

创建线程使用threading.______类,传入______参数指定执行函数,使用______传递参数。调用______()方法启动线程,调用______()方法等待线程结束。使用______________()获取当前线程对象。

4
单选题

关于Thread的start()和run()方法,以下说法正确的是:

A

start()和run()效果相同,都可以启动线程

B

start()启动新线程执行run()方法,run()在当前线程执行

C

run()启动新线程,start()在当前线程执行

D

两者都必须调用才能启动线程

5
判断题

线程锁Lock用于防止多个线程同时访问共享资源,acquire()获取锁,release()释放锁,确保同一时刻只有一个线程可以执行被保护的代码段。

A

B

6
单选题

关于RLock(可重入锁)和Lock的区别,以下说法正确的是:

A

RLock和Lock完全相同

B

RLock允许同一线程多次获取锁,Lock不允许

C

Lock性能更好,RLock性能更差

D

RLock只能在递归函数中使用

7
填空题

Lock用于互斥访问,_______()获取锁,_______()释放锁,推荐使用______语句自动管理。RLock是______锁,同一线程可______获取。Semaphore是______,控制同时访问资源的________上限。

8
判断题

queue.Queue是线程安全的队列,多个线程可以安全地同时进行put()和get()操作,无需额外加锁。

A

B

9
单选题

执行q.get()时,如果队列为空,会发生什么?

A

返回None

B

返回空字符串''

C

阻塞等待直到有元素

D

抛出Empty异常

10
填空题

Queue是________的队列,内部自动处理______。put()放入元素,队列满时______。get()取出元素,队列空时________________()不阻塞取出,空时抛Empty异常。_______参数限制队列最大容量。

11
判断题

ThreadPoolExecutor是concurrent.futures模块提供的线程池,可以高效管理多个线程,自动分配任务,比手动创建线程更高效。

A

B

12
单选题

ThreadPoolExecutor的submit()和map()方法的区别是:

A

submit返回Future对象,map直接返回结果列表

B

submit只能提交单个任务,map提交多个

C

submit阻塞执行,map异步执行

D

A和B都正确

13
填空题

ThreadPoolExecutor创建线程池,___________指定最大线程数。______()提交单个任务,返回______对象,调用______()获取结果。______()批量提交任务,直接返回__________。使用______语句自动关闭线程池。

14
判断题

GIL(Global Interpreter Lock)是Python解释器的机制,它确保同一时刻只有一个线程执行Python字节码,这限制了多线程在CPU密集型任务中的并行能力。

A

B

15
单选题

GIL对以下哪种任务的影响最大?

A

网络请求(下载文件)

B

文件读写操作

C

大量数学计算(CPU密集型)

D

用户界面响应

16
填空题

GIL确保同一时刻只有______线程执行Python字节码。GIL对_______型任务影响最大,对_______型任务影响较小(I/O时会______GIL)。规避GIL的方法:使用_______________(多进程)、使用______、使用_______异步编程。

17
判断题

multiprocessing模块用于创建和管理进程,每个进程有独立的Python解释器和内存空间,可以绕过GIL实现真正的并行执行。

A

B

18
单选题

multiprocessing中,哪种方式可以实现进程间的数据共享?

A

直接访问全局变量

B

multiprocessing.Queue

C

普通的list和dict

D

以上都可以

19
填空题

multiprocessing.Process创建进程,使用______()启动,______()等待。进程间通信使用______(队列)、______(管道)、_______(共享对象)。进程有______内存空间,可以______GIL实现真正并行。

20
判断题

ProcessPoolExecutor与ThreadPoolExecutor用法相似,但使用进程而非线程,适合CPU密集型任务,可以真正并行执行。

A

B

← 上一个试卷 并发与异步高级专项测试
下一个试卷 → 异常处理专项测试

📝 发现内容有误?点击此处直接编辑

想参加完整模拟考试?
小程序提供计时考试、自动评分和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库