0
我在Python 3.x中做了一個類,它充當服務器。一種方法是使用套接字模塊(數據分別存儲在self.cmd和self.msr)通過UDP/IP管理髮送和接收數據。我希望能夠修改self.msr,self.cmd變量來自python解釋器在線。例如:在Python解釋器的後臺運行方法
>>> from myserver import MyServer
>>> s = MyServer()
>>> s.bakcground_recv_send() # runs in the background, constantly calling s.recv_msr(), s.send_cmd()
>>> process_data(s.msr) # I use the latest received data
>>> s.cmd[0] = 5 # this will be sent automatically
>>> s.msr # I can see what the newest data is
到目前爲止,s.bakcground_recv_send()不存在。我需要手動調用s.recv_msr()我希望看到更新的s.msr值每次(s.recv_msr使用阻塞套接字),然後調用s.send_cmd()到發送s.cmd。
在此特定情況下,其中模塊更有意義:多進程或線程? 任何提示我怎麼能最好地解決這個問題?我對流程或線程沒有經驗(只是讀了很多,但我仍然不確定要走哪條路)。
謝謝,我會試試看。稍後我可能會提出有關實施的其他問題。 – jpmz
直接訪問與該線程共享的類屬性是否安全**?當線程正在接收/發送數據時,在控制檯鍵入s.cmd [0] = 5似乎沒有問題。我應該使用_queues_嗎? – jpmz
是的,屬性訪問是線程安全的。 http://effbot.org/pyfaq/what-kinds-of-global-value-mutation-are-thread-safe.htm –