报错:AttributeError: 'Thread' object has no attribute 'result'
时间: 2023-06-21 14:22:01 浏览: 1547
很抱歉,我的前一条回答中有误。`Thread` 对象没有 `result` 属性,因此需要使用其他方法来获取线程的返回值。
一种常见的方法是使用队列(queue)来传递数据。下面是一个示例代码:
``` python
import threading
import queue
def worker(num, queue):
"""线程要执行的任务"""
print('Worker %d started' % num)
result = num * 2
queue.put(result)
threads = []
results = []
queue = queue.Queue()
for i in range(5):
t = threading.Thread(target=worker, args=(i, queue))
threads.append(t)
t.start()
for t in threads:
t.join()
while not queue.empty():
results.append(queue.get())
print(results)
```
在上面的代码中,我们创建了一个队列 `queue`,用于存储每个线程的返回值。在 `worker` 函数中,我们计算出每个线程的返回值,并使用 `queue.put` 方法将它们放入队列中。在主线程中,我们使用 `while` 循环从队列中获取每个线程的返回值,并将它们添加到 `results` 列表中。需要注意的是,我们在获取队列中的每个元素之前,使用 `queue.empty` 方法检查队列是否为空。
这种方法的好处是它是线程安全的,因为队列本身已经实现了线程安全的操作。同时,它也可以方便地扩展到多个生产者和消费者的情况。