python多线程创建线程共享变量,子线程休眠与唤醒怎么实现
时间: 2023-11-28 13:50:48 浏览: 36
在Python中,可以使用threading模块创建线程。在多个线程中共享变量,可以使用Lock对象来保证数据的同步和互斥访问。可以使用threading模块中的Condition对象来实现子线程的休眠与唤醒。
下面是一个示例代码,实现了共享变量、子线程休眠与唤醒的功能:
```python
import threading
# 共享变量
shared_var = 0
# 创建Lock对象
lock = threading.Lock()
# 创建Condition对象
cond = threading.Condition(lock)
def worker():
global shared_var
while True:
with lock:
# 判断共享变量是否满足条件
while shared_var < 5:
# 如果不满足条件,子线程休眠
cond.wait()
# 执行任务
shared_var = 0
print("Worker: shared_var has been reset to 0.")
# 唤醒主线程
cond.notify()
def main():
global shared_var
t = threading.Thread(target=worker)
t.start()
while True:
with lock:
# 修改共享变量
shared_var += 1
print("Main: shared_var has been incremented to {}.".format(shared_var))
# 如果共享变量满足条件,唤醒子线程
if shared_var == 5:
cond.notify()
# 主线程休眠
cond.wait()
```
在上面的代码中,主线程和子线程共享一个变量shared_var。主线程每次增加shared_var的值,当共享变量等于5时,唤醒子线程。子线程判断共享变量是否满足条件,如果不满足条件则休眠,如果满足条件则执行任务并唤醒主线程。通过Lock和Condition对象的配合使用,实现了共享变量和线程之间的同步和互斥访问。