在python中将队列转储到列表/数组中

在python中将队列转储到列表/数组中,python,queue,deque,Python,Queue,Deque,我正在运行多个线程,并在队列中收集结果。我想把它转储到数组或列表中,这样我就可以索引和检索这些结果。队列中的每个元素都是维度为n的数组。我想访问这些阵列。请告诉我,我该怎么做 def dump_queue(model_queue): queue_list = [] for i in iter(model_queue.get,'STOP'): queue_list.append(i) return queue_list aux_model=train_svm(n

我正在运行多个线程,并在队列中收集结果。我想把它转储到数组或列表中,这样我就可以索引和检索这些结果。队列中的每个元素都是维度为n的数组。我想访问这些阵列。请告诉我,我该怎么做

 def dump_queue(model_queue):
 queue_list = []
 for i in iter(model_queue.get,'STOP'):
         queue_list.append(i)
  return queue_list




aux_model=train_svm(np.array(trainExample),np.array(trainLabel))
model_queue.put(aux_model.coef_)

因此,阵列是
svm
的学习模型参数。模型_队列在线程之间共享。我想访问每个模型参数向量,而不是模型参数的每个条目。

正如Gabriel所说,你应该明确你的问题

当你提到数组时,我认为你指的是列表。Python数组用于存储数值

但是,如何将队列转换为嵌套列表:#输出列表:

collectedData = list()
# # # 
# for every thread, call:
threadBuffer = [item for item in q.queue]
collectedData.append(threadBuffer)
这将在嵌套列表中收集数据,您可以轻松访问这些列表,如本例所示:

l = list()
l.append([1,2,3,4,5,6,7,9,10])
l.append([6,7,8,9,0,11,22,33])
现在您可以自由访问: l[1][2]>8

这对你有帮助吗


致以最良好的祝愿,Christian不确定这是否是同一个问题,但我需要做同样的事情,最后写了这篇文章。我正在使用threading.Thread和Python2.7中的队列对象。只是想把队列排到列表中

def queue_to_list(q):
    """ Dump a Queue to a list """

    # A new list
    l = []

    while q.qsize() > 0:
        l.append(q.get())
    return l

你已经完成了并行部分,只想在列表中得到结果,是吗?然后尝试:

list(my_queue.queue)
例如:

from queue import Queue

q = Queue()
for i in range(5):
    q.put(i)

l = list(q.queue)
print(l)
输出:

[0, 1, 2, 3, 4]

我将采用以下解决方案:

from collections import deque
q = deque()
for i in range(5):
    q.append([i,i+10])
listed_q = list(q)
现在,您可以通过索引或切片轻松访问这些值:

print listed_q[1]        # [1, 11]
print listed_q[1][1]     # 11
由于list()创建了q的一个副本,所以您应该关注队列的维度。队列越长,执行此操作所需的时间越长。另一种方法是使用itertools.islice,在将结果存储到列表中之前,首先对队列进行切片。查看以下链接(此处还提供了性能度量):


你必须更具体一点。这些是什么样的队列?(python队列、AMQP、STOMP)队列中的信息是如何表示的?(json、XML、Yaml、pickled python对象)。另外,您是否有一些已经尝试过但尚未成功的代码?你打算如何为这些数组编制索引?嗨,Gabriel我已经试着让问题变得更复杂了specific@AkshayLAradhya我刚刚在Python3.6.5中进行了测试,效果很好。你用的是同样的进口货吗?对不起,我的错。我认为这是针对
多处理.Queue
的,为了充分披露,我认为应该注意的是,
Queue.Queue
属性没有文档化,尽管它似乎不是私有的,因为它没有前导
\ucode>字符,这使得它的状态在我看来至少有点模糊——换句话说,它似乎只是一个“实现细节”……这是将项目留在队列中还是将其删除?