MST

星途 面试题库

面试题:Python中if语句如何在简单并发场景协助同步控制

假设有两个线程,一个线程负责生成数据并放入队列,另一个线程从队列取数据进行处理。请使用Python的`if`语句配合`threading`模块实现简单的同步控制,确保取数据线程在队列有数据时才进行操作。
17.4万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
import threading
import queue

q = queue.Queue()


def producer():
    for i in range(5):
        q.put(i)


def consumer():
    while True:
        if not q.empty():
            data = q.get()
            print(f"处理数据: {data}")
            q.task_done()
        else:
            break


t1 = threading.Thread(target=producer)
t2 = threading.Thread(target=consumer)

t1.start()
t2.start()

t1.join()
t2.join()

解释:

  1. queue.Queue 是Python标准库中线程安全的队列。
  2. producer 函数负责生成数据并放入队列。
  3. consumer 函数使用 if not q.empty() 判断队列是否有数据,有数据则取出并处理。
  4. q.task_done() 用于告诉队列,一个任务已经完成,防止 join 阻塞。
  5. 最后启动两个线程并等待它们完成。