
Phil Mayers wrote:
Mike Pelletier wrote:
On Fri, Mar 7, 2008 at 8:36 AM, Phil Mayers <p.mayers@imperial.ac.uk> wrote:
If you fork a python interpreter, you should very quickly replace the process with exec.
Does fork+exec have any advantages over spawn?
If you mean "os.spawnXX" I think that, under Unix, those *are* fork & exec, so no - they're identical.
Sorry - to reply to myself and try to be more clear: In almost all circumstances, regardless of whether you're using Twisted or not, fork'ing a python interpreter and leaving both parent and child running off the same memory image for any length of time is unwise. In that respect, os.spawnXX == fork/exec and is thus fine. However...
I don't think there's a native unix syscall "spawn".
Seems I recall there is something in the MS VC runtime named similar.
Anyway - if we're talking about Twisted, you want to use the Twisted support - reactor.spawnProcess and a subclass of t.i.p.ProcessProtocol to talk to the child worker.
reactor.spawnProcess does the right thing(tm)
In almost all circumstances when using Twisted, you should use reactor.spawnProcess or one of the util functions t.i.utils.getProcess*