Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapakah utas Python saya dilaksanakan sebelum saya memulakannya secara eksplisit?
Pelaksanaan Benang Sebelum Invokasi Eksplisit
Modul berbilang benang Python membenarkan pelaksanaan kod selari menggunakan objek Benang. Walau bagaimanapun, gelagat luar biasa boleh berlaku apabila mencipta dan mengkonfigurasi urutan.
Isu timbul apabila menghantar fungsi kepada hujah sasaran Thread dengan tanda kurung mengekor, seperti ditunjukkan di bawah:
t1 = threading.Thread(target=self.read())
Tingkah laku ini berpunca daripada tanggapan salah bahawa memanggil target=self.read() akan menetapkan jalan self.read() kepada benang. Malangnya, ini tidak betul. Dengan melampirkan kurungan, fungsi itu digunakan serta-merta, dan nilai pulangannya ditetapkan sebagai sasaran sebaliknya. Untuk objek Thread, ia menjangkakan untuk menerima fungsi sebagai sasaran.
Untuk menyelesaikan isu ini, cuma alih keluar kurungan daripada hujah sasaran dan gunakan kaedah start() utas secara eksplisit:
t1 = threading.Thread(target=self.read) t1.start()
Kini, self.read() akan berjalan selama-lamanya dalam urutan yang baru dibuat, membenarkan atur cara meneruskan dan mencetak "sesuatu." Pengubahsuaian ini memastikan bahawa fungsi ditetapkan sebagai sasaran dengan betul dan tidak dilaksanakan lebih awal.
Atas ialah kandungan terperinci Mengapakah utas Python saya dilaksanakan sebelum saya memulakannya secara eksplisit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!