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
Lepaskan: 2024-11-10 08:03:02
asal
717 orang telah melayarinya

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())
Salin selepas log masuk

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()
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan