How do I run some python code in another process?
Question: I want to start, from Python, some other Python code, preferably a function,
but in **another process**.

It is mandatory to run this in another process, because I want to run some
concurrency tests, like opening a file that was opened exclusively by the
parent process (this has to fail).

Requirements:

  * multiplatform: linux, osx, windows
  * compatible with Python 2.6-3.x


Answer: I would seriously take a look at the documentation for
[multiprocessing](http://docs.python.org/library/multiprocessing.html) library
of Python. From the first sentence of the package's description:

> multiprocessing is a package that supports spawning processes using an API
> similar to the threading module.

It then goes on to say that it side-steps the GIL, which is what it sounds
like you're trying to avoid. See their example of a trivial set up:

    
    
    from multiprocessing import Process
    
    def f(name):
        print 'hello', name
    
    if __name__ == '__main__':
        p = Process(target=f, args=('bob',))
        p.start()
        p.join()
    

That's a function call being done in another process separate from the process
you're inside. Again, all this from the documentation.

