값을 대기열에 넣은 후에 값을 변경하는 방법이 있습니까? 예를 들어, 몇 개의 변수가있는 대기열이있는 경우 첫 번째 변수를 대기열에없는 다른 값과 합할 수 있습니까? 이렇게하는 가장 좋은 방법은 다음과 같습니다.다중 처리 대기열 내의 변수 변경
x = queue.get()
queue.put(x+some_value)
또는 먼저 큐에서 개체를 제거하지 않고 수행 할 수있는 방법이 있습니까?
값을 대기열에 넣은 후에 값을 변경하는 방법이 있습니까? 예를 들어, 몇 개의 변수가있는 대기열이있는 경우 첫 번째 변수를 대기열에없는 다른 값과 합할 수 있습니까? 이렇게하는 가장 좋은 방법은 다음과 같습니다.다중 처리 대기열 내의 변수 변경
x = queue.get()
queue.put(x+some_value)
또는 먼저 큐에서 개체를 제거하지 않고 수행 할 수있는 방법이 있습니까?
대기열이 아닌 다중 처리. 값, 다중 처리. 배열과 같은 공유 값을 원할 수도 있습니다. 대기열에서 허용하지 않습니다.
대기열은 이러한 방식으로 액세스를 허용하지 않습니다. 큐에 남아있는 오브젝트에 직접 액세스하도록 요청하면 큐의 목적에 어긋납니다.
내가 당신을 위해 무엇을 찾고있을 수도 것은 큐 대신 사용하는 양단 큐 개체라고 생각합니다 (여기에 대해 읽어 : http://docs.python.org/library/collections.html#collections.deque)
양단 큐 개체가 스레드 안전 및 큐처럼 행동 할 수 여전히 동안 인덱스 값을 사용하여 멤버에 직접 액세스 할 수 있습니다. 그러나 당신이 양 옆구리의 왼쪽이나 오른쪽 끝을 접근하지 않는 한 임의 접근에 대해서는 속도가 느립니다. 그래서 당신의 질문을 올바르게 이해한다면 이것은 당신의 경우에 문제가되어서는 안됩니다.
그러나 큐의 임의 액세스가 많은 경우 대신 multiprocessing.array를 사용하십시오.
그들은 또한 공정 안전합니까? – user1423020
내가 무슨 뜻인지 잘 모르겠다. 다른 프로세스에서 실행되는 경우 주소 공간이 공유되지 않으므로 걱정할 필요가 없습니다. 또한 원래 질문에 관해서는 Queue()에 내부 Queue() 큐가 있음을 알았습니다.이 큐는 본질적으로 양동이가없는 개체로, 원래 질문에서 설명한 방법으로 큐에 액세스하는 데 사용할 수 있습니다. 그러나 권장하지는 않습니다. 여기에 대한 자세한 내용은 http://stackoverflow.com/questions/717148/python-queue-queue-vs-collections-deque를 참조하십시오. –
대기열을 사용해야하는 특별한 이유가 있습니까? 대신 목록을 사용하지 않는 경우 값을 쉽게 수정할 수 있습니다. – EEP