【发布时间】:2018-03-28 02:59:44
【问题描述】:
我正在研究 Python 和线程,更具体地说,是从线程中调用的方法返回数据。我所有的研究都指向了队列。但是,我不确定我是否真的正确实施了它,我有一个问题。
import threading
import queue
def construct_list(read_file, backup):
with open(read_file) as read_obj:
backup.put(read_obj.readlines())
backup.task_done()
backup_list = queue.Queue()
read_thread = threading.Thread(target=construct_list, args=("list.txt", backup_list,))
read_thread.start()
read_thread.join()
while backup_list.empty() is False:
print(backup_list.get())
问题:
- 我是否正确实施和使用了队列?我已经看到代码调用
queue.join()的示例在这里需要吗? -
当使用 while 循环打印队列时,它会这样打印:
['KeePass'] 如何在没有 [''] 的情况下打印它并获得纯字符串 KeePass?
【问题讨论】:
-
1.不确定python线程库2。你不只是打印一个列表吗?请尝试使用 backup_list.get()[0]。无需过多介绍您的代码,备份列表是否应该包含超过 1 个元素?您是否要打印出其中的所有项目?为什么不直接做
for item in backup_list: print(item) -
@bhow - 但是如果列表中还有其他项目,我将不得不获取队列的长度,根据长度运行 for 循环并将其插入
[]跨度> -
@bhow - 因为 Queue 不能使用 for 循环进行迭代,所以我尝试了这个,它抛出了一个错误
标签: python multithreading python-3.x io