主线程向子线程传递信息
时间: 2023-07-04 20:27:07 浏览: 102
主线程向子线程传递信息可以通过共享变量的方式实现。在Python中,可以使用 threading 模块中的 Lock 和 Condition 类来确保线程安全。具体来说,可以在主线程和子线程中都创建一个 Lock 和 Condition 对象,并通过 acquire() 和 release() 方法来控制对共享变量的访问。
下面是一个示例代码:
```
import threading
# 共享变量
message = ""
# 创建 Lock 和 Condition 对象
lock = threading.Lock()
condition = threading.Condition(lock)
# 子线程函数
def worker():
global message # 引用全局变量
with condition:
while message == "":
condition.wait()
print("子线程收到消息:", message)
# 主线程
if __name__ == "__main__":
# 创建子线程并启动
thread = threading.Thread(target=worker)
thread.start()
# 向子线程发送消息
with condition:
message = "Hello, World!"
condition.notify()
# 等待子线程执行完毕
thread.join()
```
在上面的示例中,主线程向子线程发送消息的过程分为两步:首先使用 acquire() 方法获取 Lock 对象,然后修改共享变量 message 的值,并使用 notify() 方法通知子线程。子线程在收到通知后,使用 acquire() 方法获取 Lock 对象,并通过访问共享变量 message 来获取消息的值。
阅读全文