Tôi có một nhiệm vụ đơn giản như thế:.Python multiprocessing.Queue vs multiprocessing.manager() Queue()
def worker(queue):
while True:
try:
_ = queue.get_nowait()
except Queue.Empty:
break
if __name__ == '__main__':
manager = multiprocessing.Manager()
# queue = multiprocessing.Queue()
queue = manager.Queue()
for i in range(5):
queue.put(i)
processes = []
for i in range(2):
proc = multiprocessing.Process(target=worker, args=(queue,))
processes.append(proc)
proc.start()
for proc in processes:
proc.join()
Dường như multiprocessing.Queue thể làm tất cả công việc mà tôi cần, nhưng mặt khác Tôi thấy nhiều ví dụ về người quản lý() Queue() và không thể hiểu được những gì tôi thực sự cần. Trông giống như Manager() Queue() sử dụng một số loại đối tượng proxy, nhưng tôi không hiểu mục đích đó, bởi vì multiprocessing.Queue() làm cùng một công việc mà không có bất kỳ đối tượng proxy nào.
Vì vậy, câu hỏi của tôi là:
1) Điều gì thực sự khác biệt giữa multiprocessing.Queue và đối tượng được trả về bởi multiprocessing.manager() Queue().?
2) Tôi cần sử dụng gì?
Điều này có thể hữu ích. https://code.activestate.com/lists/python-tutor/99586/ –