Rumah > Artikel > pembangunan bahagian belakang > Mengapa Pemprosesan Berbilang Python Menyebabkan RuntimeError pada Windows Apabila Thread Diuruskan dalam Modul Berasingan?
Membetulkan RuntimeError pada Windows Semasa Menggunakan Python Multiprocessing
Python multiprocessing boleh menemui "RuntimeError" pada sistem Windows jika modul utama tidak betul dikonfigurasikan. Mesej ralat biasanya mencadangkan menggunakan fungsi "freeze_support()" untuk membetulkan isu ini. Walau bagaimanapun, mari kita menyelidiki senario tertentu di mana urutan diurus dalam modul berasingan, membawa kepada ralat yang sama.
Kod ini melibatkan modul utama ("testMain.py") yang mengimport proses pengendalian modul dan benang ("parallelTestModule.py") dan menggunakan kaedah "runInParallel"nya. Dalam "parallelTestModule.py," proses ditakrifkan dalam kelas "ParallelExtractor", yang memulakan proses menggunakan kelas "Proses" daripada modul "multiprocessing".
Inti masalah terletak pada kekurangan pengawal "jika nama == '__main__':" dalam modul utama ("testMain.py"). Pengawal ini memastikan bahawa subproses tidak mengimport modul utama secara rekursif. Apabila dilaksanakan pada Windows, subproses melaksanakan modul utama pada permulaan, menyebabkan gelung rekursif.
Untuk menyelesaikan isu ini, anda perlu memasukkan pengawal ini dalam modul utama ("testMain.py"):
import parallelTestModule if __name__ == '__main__': extractor = parallelTestModule.ParallelExtractor() extractor.runInParallel(numProcesses=2, numThreads=4)
Dengan pengubahsuaian ini, modul utama akan bertindak sebagai titik masuk hanya apabila program dijalankan secara langsung, menghalang pelaksanaan rekursif subproses dan membenarkan multiprocessing berfungsi dengan betul pada Windows.
Atas ialah kandungan terperinci Mengapa Pemprosesan Berbilang Python Menyebabkan RuntimeError pada Windows Apabila Thread Diuruskan dalam Modul Berasingan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!