Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Saya Mendapat 'RuntimeError: Percubaan untuk memulakan proses baharu...' Apabila Menggunakan Multiprocessing dalam Python pada Windows?

Mengapa Saya Mendapat 'RuntimeError: Percubaan untuk memulakan proses baharu...' Apabila Menggunakan Multiprocessing dalam Python pada Windows?

DDD
Lepaskan: 2024-11-19 08:12:03
asal
503 orang telah melayarinya

Why Do I Get

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.
Salin selepas log masuk

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)
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan