I am using an event based system using the new Python 3.5 coroutines and await. I register events and these events are called by the system.
@event aysnc def handleevent(args): # handle the event I need to initialize some classes to handle the work(time consuming). Then call instance methods, also time consuming (they actually use selenium to browse certain sites).
Ideally I would want something like the following code
# supposedly since this is multiprocessing this is a different driver per process driver = None def init(): # do the heavy initialization here global driver driver = webdriver.Chrome() def longworkmethod(): ## need to return some data return driver.dolongwork() class Drivers: """ A class to handle async and multiprocessing""" def __init__(self, numberOfDrivers): self.pool = multiprocessing.Pool(processes=numberOfDrivers, initializer=init) async def dowork(self, args): return self.pool.apply_async(longworkmethod, args=args) ### my main python class drivers = Drivers(5) @event aysnc def handleevent(args): await drivers.dowork(args) @event aysnc def quit(args): ## do cleanup on drivers sys.exit(0) This code doesn't work, but I have tried many different ways and none seem to be able to do what I want.
It doesn't have to be this exact form, but how do I go about mixing the await and coroutines with a program that needs multiprocessing?