python如何将一个线程中的数传给另一个线程
时间: 2023-11-28 13:12:16 浏览: 34
在 Python 中,线程之间数据的传递可以通过共享一个数据对象来实现。下面给出一个简单的例子,其中包含两个线程,一个线程负责产生数据,另一个线程负责消费数据。
```python
import threading
import time
# 定义一个共享的数据对象
data = None
# 定义一个锁对象,用于保护数据对象
lock = threading.Lock()
# 定义一个生产者线程
def producer():
global data
while True:
# 产生数据
new_data = time.time()
# 获取锁对象,保护数据对象
lock.acquire()
# 将数据存入共享数据对象中
data = new_data
# 释放锁对象
lock.release()
# 等待一段时间
time.sleep(1)
# 定义一个消费者线程
def consumer():
global data
while True:
# 获取锁对象,保护数据对象
lock.acquire()
# 从共享数据对象中获取数据
new_data = data
# 释放锁对象
lock.release()
# 处理数据
print(new_data)
# 等待一段时间
time.sleep(1)
# 创建并启动线程
t1 = threading.Thread(target=producer)
t2 = threading.Thread(target=consumer)
t1.start()
t2.start()
```
在上面的代码中,我们定义了一个共享的数据对象 `data` 和一个锁对象 `lock`,用于保护数据对象。生产者线程 `producer` 负责产生数据,并将数据存入共享数据对象中;消费者线程 `consumer` 从共享数据对象中获取数据,并进行处理。由于共享数据对象 `data` 被多个线程访问,因此需要在访问共享数据对象时使用锁对象 `lock` 进行保护,以避免数据竞争问题。