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