나는 마지막 날 작동을 위해 Websockify과 싸워 왔습니다. 명백한 문서가 없으므로 나는 재판 & 오류로 일을 끝냅니다.websockify를 사용하여 스레드간에 변수를 공유 할 수 없습니다.
두 개의 스레드에서 실행되는 서버가 있습니다. 한 스레드는 항상 정보를 보내고받으며 두 번째 스레드는 다른 작업을 수행합니다. 그러나 두 스레드가 서로 대화 할 수없는 것처럼 보입니다.
#!/usr/bin/env python
from websocket import WebSocketServer
from threading import Thread
from time import sleep
class Server(WebSocketServer):
a=10
def new_client(self):
while True:
sleep(1)
print("Thread 2: ", self.a)
server = Server('', 9017)
Thread(target=server.start_server).start()
# Main thread continues
while 1:
sleep(1)
server.a+=2
print("Main thread: ", server.a)
출력 :
Main thread: 18
Thread 2: 16
Main thread: 20
Thread 2: 16
Main thread: 22
Thread 2: 16
Main thread: 24
Thread 2: 16
은 분명히 두 개의 스레드가 같은 속성 a
를 공유하지 않습니다. 왜?
감사합니다. 'run_once = False'를'run_once = True'로 변경하면 모든것을 해결할 수 있습니다 :) – Pithikos
업데이트 : kanaka에 명시된대로 'break' 문에 주석을 달아야합니다. 그렇지 않으면 클라이언트는 연결이 끊어지면 다시 연결할 수 없습니다 . – Pithikos