0
multiprocessing
모듈의 원격 관리자 기능을 사용하여 여러 컴퓨터간에 작업을 배포하려고합니다. 타사 모듈이 있다는 것을 알고 있지만 가능한 한 코어를 고수하고 싶습니다. 데스크톱 용 (단일 컴퓨터), multiprocessing.Pool
클래스를 사용하여 CPU 수를 제한 할 수 있지만 원격 관리자와 몇 가지 질문이 있습니다. Python, 원격 관리자 및 다중 처리 사용
from multiprocessing.managers import BaseManager
import Queue
queue = Queue.Queue()
class QueueManager(BaseManager): pass
QueueManager.register('get_queue', callable=lambda:queue)
m = QueueManager(address=('', 50000), authkey='abracadabra')
s = m.get_server()
s.serve_forever()
이 잘 작동하고, 심지어 다음 코드를 사용하여 대기열에 작업을 제출할 수 있습니다 :
QueueManager.register('get_queue')
m = QueueManager(address=('machinename', 50000), authkey='abracadabra')
m.connect()
queue = m.get_queue()
queue.put('hello')QueueManager.register('get_queue')
m = QueueManager(address=('localhost', 50000), authkey='abracadabra')
m.connect()
queue = m.get_queue()
queue.put('hello')
또한 수를 queue.get()
은 큐에 단일 항목을 가져옵니다.
- 대기열에있는 항목을 어떻게 가져 옵니까? 대기열을 반복 할 때 무한 루프가됩니다.
- 근로자에게 각 기계를 기계 당 1 개의 작업으로 제한 할 수 있습니까?
- 이 방법은 작업자가 있는지 여부를 검사해야하는 끌어 오기 방법 인 것처럼 보이므로 다중 처리 서버를 트리거 할 수있는 푸시 방법이있을 수 있습니까?
while True: elem = queue.get() #queue empty -> it blocks!!!
가 있습니다 실행 더 이상 작업이 없을 때 "반복 처리"와 큐 이상하는 것은 당신의 작업자 프로세스를 차단하는 우아한 방법 : 큐를 통해