<p>What is exactly the function of Python's Global Interpreter Lock?
Do other languages that are compiled to bytecode employ a similar mechanism?</p>

The following is from the
official Python/C API Reference Manual
:
The Python interpreter is not fully
  thread safe. In order to support
  multi-threaded Python programs,
  there's a global lock that must be
  held by the current thread before it
  can safely access Python objects.
  Without the lock, even the simplest
  operations could cause problems in a
  multi-threaded program: for example,
  when two threads simultaneously
  increment the reference count of the
  same object, the reference count could
  end up being incremented only once
  instead of twice.
Therefore, the rule exists that only
  the thread that has acquired the
  global interpreter lock may operate on
  Python objects or call Python/C API
  functions. In order to support
  multi-threaded Python programs, the
  interpreter regularly releases and
  reacquires the lock -- by default,
  every 100 bytecode instructions (this
  can be changed with
  sys.setcheckinterval()). The lock is
  also released and reacquired around
  potentially blocking I/O operations
  like reading or writing a file, so
  that other threads can run while the
  thread that requests the I/O is
  waiting for the I/O operation to
  complete.
I think it sums up the issue pretty well.