Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I run some python code in another process?

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
like image 860
sorin Avatar asked Jun 15 '11 12:06

sorin


People also ask

How do I use one file to another in Python?

Approach: Create a Python file containing the required functions. Create another Python file and import the previous Python file into it. Call the functions defined in the imported file.


1 Answers

I would seriously take a look at the documentation for multiprocessing 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.

like image 68
wheaties Avatar answered Nov 01 '22 10:11

wheaties