Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from multiprocessing.managers import BaseManager
- from multiprocessing import Pool
- import multiprocessing as mp
- import sys
- class QueueManager(BaseManager):
- pass
- ip = sys.argv[1] if len(sys.argv) > 1 else 'localhost'
- port = int(sys.argv[2]) if len(sys.argv) > 2 else 50000
- QueueManager.register('in_queue')
- QueueManager.register('out_queue')
- m = QueueManager(address=(ip, port), authkey='blah'.encode())
- m.connect()
- out_queue = m.out_queue()
- in_queue = m.in_queue()
- def mul(i):
- s = 0
- for j in range(cols):
- s+=A[i][j] * X[j][0]
- result[i] = s
- while not in_queue.empty():
- [A, X, tasks_number] = in_queue.get()
- rows = len(A)
- cols = len(X)
- result = [0] * (tasks_number[1] - tasks_number[0])
- with Pool(mp.cpu_count()) as p:
- for i in range(tasks_number[1] - tasks_number[0]):
- mul(i)
- out_queue.put([result, tasks_number])
- in_queue.task_done()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement