Ralat Runtime dalam Python Multiprocessing pada Windows
Apabila melaksanakan kod multiprocessing pada sistem pengendalian Windows, anda mungkin menghadapi mesej ralat berikut:
RuntimeError: Attempt to start a new process before the current process has finished its bootstrapping phase. This probably means that you are on Windows and you have forgotten to use the proper idiom in the main module: if __name__ == '__main__': freeze_support() ... The "freeze_support()" line can be omitted if the program is not going to be frozen to produce a Windows executable.
Punca Ralat
Dalam Windows, subproses yang dibuat melalui modul berbilang pemprosesan akan mewarisi persekitaran proses utama. Apabila subproses dilancarkan, ia akan cuba mengimport modul utama, yang boleh membawa kepada pelaksanaan rekursif kod. Untuk mengelakkan ini, anda perlu menambah if __name__ == '__main__' pengawal pada modul utama.
Penyelesaian
Untuk menyelesaikan isu, ubah suai modul utama seperti berikut:
import parallelTestModule if __name__ == '__main__': extractor = parallelTestModule.ParallelExtractor() extractor.runInParallel(numProcesses=2, numThreads=4)
Penjelasan
The jika __name__ == '__main__' keadaan menyemak sama ada kod sedang dilaksanakan daripada modul utama secara langsung. Jika syarat ini dipenuhi, ini bermakna skrip tidak diimport oleh modul lain. Dalam kes ini, anda boleh membuat subproses dengan selamat dalam modul utama, kerana ia memastikan bahawa kod tidak akan dilaksanakan secara rekursif.
Atas ialah kandungan terperinci Mengapa Saya Mendapat 'RuntimeError: Percubaan untuk memulakan proses baharu...' Apabila Menggunakan Multiprocessing dalam Python pada Windows?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!