Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapakah utas Python saya dilaksanakan sebelum saya memulakannya secara eksplisit?

Mengapakah utas Python saya dilaksanakan sebelum saya memulakannya secara eksplisit?

Susan Sarandon
Susan Sarandonasal
2024-11-10 08:03:02677semak imbas

Why does my Python thread execute before I explicitly start it?

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!

Kenyataan:
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