I'd say go with option 1. Pass the window handler (or DC) to the rendered thread.
To overcome the GIL problem, you can use Py_BEGIN_ALLOW_THREADS (see http://docs.python.org/release/1.5.2/api/threads.html) -- http://mail.python.org/mailman/listinfo/python-list