Akses Nilai Pulangan Fungsi dalam Multiprocessing.Process
Dalam multiprocessing dengan Python, mendapatkan nilai pulangan fungsi yang dihantar ke multiprocessing. Proses boleh menjadi rumit, kerana ia tidak disimpan terus dalam objek Proses.
Pertimbangkan contoh berikut:
import multiprocessing def worker(procnum): '''worker function''' print(str(procnum) + ' represent!') return procnum if __name__ == '__main__': jobs = [] for i in range(5): p = multiprocessing.Process(target=worker, args=(i,)) jobs.append(p) p.start() for proc in jobs: proc.join() print(jobs)
Walaupun kod ini mencetak output setiap proses pekerja, kami tidak boleh mengakses nilai pulangan mereka secara langsung.
Untuk mendapatkan semula nilai pulangan, kami boleh menggunakan pembolehubah kongsi. Dalam kod yang disemak berikut, Pengurus() daripada modul berbilang pemprosesan digunakan untuk mencipta kamus kongsi:
import multiprocessing def worker(procnum, return_dict): """worker function""" print(str(procnum) + " represent!") return_dict[procnum] = procnum if __name__ == "__main__": manager = multiprocessing.Manager() return_dict = manager.dict() jobs = [] for i in range(5): p = multiprocessing.Process(target=worker, args=(i, return_dict)) jobs.append(p) p.start() for proc in jobs: proc.join() print(return_dict.values())
Di sini, setiap proses pekerja mengemas kini kamus kongsi return_dict dengan nilai pulangannya. Proses utama kemudiannya boleh mengakses nilai ini daripada kamus kongsi.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kembali Nilai daripada Multiprocessing.Process Functions dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!