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?
 
     
    