-1
스레드 및 큐 라이브러리를 사용하여 스레드를 실행할 때 스레드 실행() 함수에서 오브젝트를 생성합니다. 의 클래스가과 같이 시작한다고 가정 해 봅시다 : 파이썬은 사전의 하나 개의 인스턴스를 생성처럼Python은 동시에 실행될 때 오브젝트의 dictonary 인스턴스 하나만 가지고 있습니다.
class Test():
def __init__(self, dictionary={}):
self.dict = dictionary
내가 다른 스레드에서 사전에 액세스하려고 보인다. 다음은 Thread 클래스이다.
class ThreadTest(threading.Thread):
def run(self):
while True:
// interact with Queue items
obj = Test()
print "%s - %s" % (self.name, id(obj.dict))
queue.task_done()
그리고 출력 : 나는이 두 가지를 시작
Thread-1 - 19219616
Thread-2 - 19219616
테스트 클래스가 두 번 만들어지기 때문에이 정말 혼란이지만,이 같은 사전을 공유한다.
이 경우 사전의 새 인스턴스를 만드는 방법이 있습니까?
이 질문에 대한 답변이 몇 번이고 예, 변경할 수있는 기본 인수를 사용하지 않으면 극복 할 수 있습니다. –
알겠습니다. 문제가 기본 인수로 인해 발생했는지 알지 못했습니다. 감사! – timp