2009-04-19 18 views
13

data l'assenza di una chiamata di Windows fork(), come sta il pacchetto multiprocessing in Python 2.6 implementata in Windows? Oltre ai thread di Win32 o una sorta di forcella falsa o solo la compatibilità in cima al multithreading esistente?In che modo il Multiprocessing Python è implementato su Windows?

+3

Se Adam ha risposto alla tua domanda, dovresti contrassegnarlo come accettato :-) –

risposta

29

Si utilizza una chiamata di sottoprocesso a sys.executable (vale a dire avviare un nuovo processo Python) seguita dalla serializzazione di tutti i globals e dall'invio di quelli sul pipe. La clonazione di un povero del processo attuale. Questa è la causa della extra restrictions trovato quando si utilizza multiprocessing su Windows plaform.

Potreste anche essere interessati ad esaminare Jesse Noller's talk from PyCon circa multiprocessing in cui si discute il suo utilizzo.

+4

Adam è corretto (sono Jesse) - è sfortunato, ma tutte le "implementazioni" di fork su win32 sono orribili hack. Pertanto abbiamo bloccato con il sottoprocesso e la serializzazione – jnoller

+0

Grazie mille per una risposta chiara! –

+1

Jeff: dovresti contrassegnare questa risposta come accettata se sei soddisfatto. – Adam

Problemi correlati