有没有办法在将值放入队列后更改它们?例如,如果我有一个队列中有几个变量,我可以将第一个变量与队列中没有的其他值相加吗?最好的方法是这样的:
x = queue.get()
queue.put(x+some_value)
或者有没有办法在不先从队列中删除对象的情况下做到这一点?
有没有办法在将值放入队列后更改它们?例如,如果我有一个队列中有几个变量,我可以将第一个变量与队列中没有的其他值相加吗?最好的方法是这样的:
x = queue.get()
queue.put(x+some_value)
或者有没有办法在不先从队列中删除对象的情况下做到这一点?
您可能需要共享值,例如 multiprocessing.Value、multiprocessing.Array,而不是队列。队列不允许。
队列不允许以这种方式访问;您要求直接访问仍在队列中的对象,这违背了队列的目的。
我认为您可能正在寻找的是要使用的 deque 对象而不是队列(在此处阅读:http: //docs.python.org/library/collections.html#collections.deque)
双端队列对象是线程安全的,可以像队列一样运行,同时仍允许使用索引值直接访问其成员。但是,除非您访问双端队列的左端或右端,否则随机访问速度较慢,因此,如果我正确理解了您的问题,这在您的情况下应该不是问题。
但是,如果您确实对双端队列有很多随机访问,则只需使用 multiprocessing.array 代替。