-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsimple_workers.py
More file actions
24 lines (23 loc) · 822 Bytes
/
Copy pathsimple_workers.py
File metadata and controls
24 lines (23 loc) · 822 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import sys
import pso
import subprocess
if len(sys.argv) != 3:
# main process
coord_name = pso.init()
pso.root().requests = [{ 'idx': i, 'request': f'request {i}' }
for i in range(10)]
pso.root().responses = [None]*10
workers = [subprocess.Popen([sys.executable, sys.argv[0], coord_name, str(req['idx'])])
for req in pso.root().requests]
statuses = [w.wait(5) for w in workers]
for (idx, response) in pso.root().responses:
print((idx, response))
else:
# worker process
pso.connect(sys.argv[1])
myindex = int(sys.argv[2])
myrequest = pso.root().requests[myindex]
import time, random
time.sleep(random.randrange(2)) # imitate some long work
pso.root().responses[myindex] = \
(myindex, f'response {myindex} for {myrequest["request"]}')