相关疑难解决方法(0)

如何迭代Python中的Queue.Queue项?

有没有人知道一种pythonic方法迭代a的元素Queue.Queue 而不从队列中删除它们.我有一个生产者/消费者类型的程序,其中要处理的项目通过使用a传递Queue.Queue,我希望能够打印剩余的项目.有任何想法吗?

python queue producer-consumer

33
推荐指数
3
解决办法
4万
查看次数

遍历多处理队列

我有两个多处理线程,一个向队列添加项目,另一个需要遍历当前队列。我该如何进行迭代?或者,如何将当前队列转换为列表以进行迭代?

一些伪代码:

import multiprocessing as mp
thequeue = mp.Queue()
def func1():
    global thequeue
    while True:
        item = readstream()
        if item not None:
            thequeue.put(item)
def func2():
    while True:
        for item in thequeue:    # This only works for Lists, how to do this for queues?
            if item == "hi":
                print(item)
main():
    mp.Process(target=func1).start()
    mp.Process(target=func2).start()
Run Code Online (Sandbox Code Playgroud)

python python-3.x

3
推荐指数
2
解决办法
4736
查看次数

这个循环是如何工作的:对于iter中的项目(queue.get,None)?

我正在使用python Queue存储要由线程处理的项目.从我在网上看到的,在队列中放入一个'None'对象并设置这样的线程处理将使线程停止.(它确实如此)

for item in iter(queue.get, None):
    #do stuff
    queue.task_done()
Run Code Online (Sandbox Code Playgroud)

现在我在网上找不到关于这种类型的for循环的很多信息.从我所看到它刚刚结束,并不会处理任何在队列中留下None对象的东西.在末尾添加queue.task_done()不起作用.

有人可以向我解释这种类型的for循环.他们是如何命名的,他们如何在一般情况下工作,或指向我一些关于它的好文档,因为我找不到任何.

python multithreading

2
推荐指数
2
解决办法
2674
查看次数

遍历包含python中的对象的队列

我是 python 的新手,刚刚在尝试遍历队列时发现了一个奇怪的错误。

这是一个代码片段:

frontier = q.PriorityQueue()

    for goal in goals:
        portals = findPortals(maze)
        comb_value = heuristic(startX, startY, goal[0], goal[1])
        frontier.put_nowait((comb_value, heuristic(startX, startY, goal[0], goal[1]), 0, startX, startY, startX, startY))

        for portal in portals:
            heur = portalHeuristic(maze, startX, startY, goal[0], goal[1])
            frontier.put_nowait((heur, heur, 0, startX, startY, startX, startY))

    for elem in list(frontier):
        print(elem)
Run Code Online (Sandbox Code Playgroud)

当试图打印出它说的元素时TypeError: 'PriorityQueue' object is not iterable。我能以某种方式解决这个问题吗?我试图在这里找到一些解决方案,但我没有真正找到我理解的任何东西......

python priority-queue

2
推荐指数
1
解决办法
3918
查看次数