No, the current behavior is inconsistent:

    def _start_loop(q):
        l = evergreen.EventLoop()
        q.put(l)
        l.run_forever()

    q = queue.Queue()
    t = threading.Thread(target=_start_loop, args=(q,))
    t.start()

    other = q.get()
    #evergreen.EventLoop()
    other.destroy()

You get the RuntimeError if a loop is created in the current thread, just uncomment the line.