PicklingError dalam Python Multiprocessing
Apabila menggunakan Python multiprocessing, anda mungkin menghadapi "PicklingError: Can't pickle
Isu Fungsi Bersarang
Dalam kes khusus anda, ralat mungkin disebabkan oleh fungsi yang anda penjeru memanggil fungsi bersarang. Walaupun fungsi luar f() ditakrifkan pada peringkat atas, jika ia memanggil fungsi g() yang mengandungi fungsi bersarang h(), multiprocessing akan cuba untuk mengambil fungsi bersarang dan gagal.
Penyelesaian
Untuk menyelesaikan isu ini, alihkan fungsi yang ingin anda acar ke peringkat atas modul. Sebagai alternatif, anda boleh mencipta fungsi berasingan di peringkat atas yang memanggil fungsi bersarang dan jeruk yang berfungsi sebaliknya.
Contohnya:
# Original code def f(): g() def g(): h() # Corrected code def f(): wrapper_function() def wrapper_function(): g() h()
Dengan mentakrifkan wrapper_function() di peringkat atas dan penjerukannya, anda boleh mengelakkan ralat penjerukan.
Tambahan Pertimbangan
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Python Multiprocessing 'PicklingError: Can't pickle '?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!