I think this is a bug. Under 3.4 - 3.6, this works just fine. However, in 3.7.0 and 3.8.0a0 (current master; 86bfed372b81b8111a56a3311d537566d5df7f61), I get the following on the loop.close()
call:
import asyncio
from concurrent.futures import ProcessPoolExecutor
import os
loop = asyncio.get_event_loop_policy().new_event_loop()
loop.set_default_executor(ProcessPoolExecutor())
future = loop.run_in_executor(None, os.getpid)