2011-07-28 40 views
0

我在Python 3.x中做了一個類,它充當服務器。一種方法是使用套接字模塊(數據分別存儲在self.cmdself.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

在此特定情況下,其中模塊更有意義:多進程線程? 任何提示我怎麼能最好地解決這個問題?我對流程或線程沒有經驗(只是讀了很多,但我仍然不確定要走哪條路)。

回答

0

在這種情況下,線程是最有意義的。簡而言之,多處理用於在不同處理器上運行進程,線程用於在後臺執行任務。

+0

謝謝,我會試試看。稍後我可能會提出有關實施的其他問題。 – jpmz

+0

直接訪問與該線程共享的類屬性是否安全**?當線程正在接收/發送數據時,在控制檯鍵入s.cmd [0] = 5似乎沒有問題。我應該使用_queues_嗎? – jpmz

+0

是的,屬性訪問是線程安全的。 http://effbot.org/pyfaq/what-kinds-of-global-value-mutation-are-thread-safe.htm –