キューに入れられた後に値を変更する方法はありますか? たとえば、いくつかの変数を含むキューがある場合、最初の変数をキューにない他の値と合計できますか? これを行う最善の方法は次のようなものでしょうか。
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 )
deque オブジェクトはスレッドセーフであり、インデックス値を使用してそのメンバーに直接アクセスできる一方で、キューのように動作できます。ただし、両端キューの左端または右端にアクセスしない限り、ランダム アクセスの場合は遅くなるため、質問を正しく理解していれば、これは問題になりません。
ただし、両端キューへのランダム アクセスが多い場合は、代わりに multiprocessing.array を使用してください。