我有一個關於在Python中的進程之間共享隊列的問題。下面,我有三個隊列,一個主流程和三個內部流程。每個內部進程將添加並從各個隊列中獲取值(他們需要輕鬆訪問隊列)。使用嵌套類在進程間共享隊列(Python)
我認爲它現在可以正常工作,但是這個代碼是我要開展工作的一個大項目的基礎,我想確保沒有更好的方法來做到這一點,我不會不知道。我只是想出了這個想法。從其他一些帖子看來,嵌套類不是很像Python。
有什麼建議嗎?這段代碼容易或難以閱讀?放棄嵌套類還是保持原樣?
謝謝大家。
class MainController(Process):
def __init__(self):
self.queue_stream = Queue()
self.queue_language = Queue()
self.queue_expander = Queue()
self.control_stream = self.StreamController(self).start()
self.control_language = self.LanguageController(self).start()
self.control_expander = self.ExpanderController(self).start()
print 'Launching Main Controller'
class StreamController(Process):
def __init__(self, main):
Process.__init__(self)
self.main = main
print 'Launching Stream Controller'
def run(self):
while True:
self.main.queue_stream.put('hello, stream')
class LanguageController(Process):
def __init__(self, main):
Process.__init__(self)
self.main = main
print 'Launching Language Controller'
def run(self):
while True:
print self.main.queue_stream.get()
self.main.queue_language.put('hello, language')
class ExpanderController(Process):
def __init__(self, main):
Process.__init__(self)
self.main = main
print 'Launching Expander Controller'
def run(self):
while True:
print self.main.queue_language.get()
self.main.queue_expander.put('hello, expander')
def main():
# Launch all queues for the system
control_main = MainController()
if __name__ == '__main__':
print 'Launching System...'
main()