33from datetime import datetime , timedelta
44import json
55import logging
6- from multiprocessing import Process , Queue , queues
6+ from multiprocessing . queues import Empty
77import os
88import shutil
99import subprocess
1919from .core import Server , rpc , write , RPCClosed
2020from .metrics import disk_io_counters , net_io_counters
2121from .protocol import to_serialize
22- from .utils import get_ip , ignoring , log_errors , tmpfile
22+ from .utils import get_ip , ignoring , log_errors , mp_context , tmpfile
2323from .worker import _ncores , Worker , run , TOTAL_MEMORY
2424
2525nanny_environment = os .path .dirname (sys .executable )
@@ -191,13 +191,14 @@ def instantiate(self, stream=None, environment=None):
191191 except JSONDecodeError :
192192 yield gen .sleep (0.01 )
193193 else :
194- q = Queue ()
195- self .process = Process (target = run_worker_fork ,
196- args = (q , self .ip , self .scheduler .ip ,
197- self .scheduler .port , self .ncores ,
198- self .port , self ._given_worker_port ,
199- self .local_dir , self .services , self .name ,
200- self .memory_limit , self .reconnect ))
194+ q = mp_context .Queue ()
195+ self .process = mp_context .Process (
196+ target = run_worker_fork ,
197+ args = (q , self .ip , self .scheduler .ip ,
198+ self .scheduler .port , self .ncores ,
199+ self .port , self ._given_worker_port ,
200+ self .local_dir , self .services , self .name ,
201+ self .memory_limit , self .reconnect ))
201202 self .process .daemon = True
202203 self .process .start ()
203204 while True :
@@ -209,7 +210,7 @@ def instantiate(self, stream=None, environment=None):
209210 self .worker_dir = msg ['dir' ]
210211 assert self .worker_port
211212 break
212- except queues . Empty :
213+ except Empty :
213214 yield gen .sleep (0.1 )
214215
215216 logger .info ("Nanny %s:%d starts worker process %s:%d" ,
0 commit comments