Rumah >pembangunan bahagian belakang >Tutorial Python >Semak sama ada benang telah bermula dalam Python
Multithreading ialah teknik berkuasa yang digunakan dalam bahasa pengaturcaraan moden untuk melaksanakan berbilang thread secara serentak Dalam Python, modul threading digunakan untuk melaksanakan multithreading melaksanakan pelbagai tugas serentak dan boleh meningkatkan prestasi aplikasi.
Apabila menggunakan Python untuk pengaturcaraan berbilang benang, adalah sangat penting untuk mengetahui cara menyemak sama ada benang sedang berjalan. Kaedah is_alive() yang disediakan oleh kelas Thread ialah cara yang mudah dan berkesan untuk menyemak status thread. Dengan menggunakan kaedah ini, anda boleh menentukan sama ada benang telah dimulakan, sedang dijalankan atau telah menyelesaikan pelaksanaannya.
Dalam artikel ini, kami akan meneroka cara menggunakan kaedah is_alive() dalam Python untuk menyemak sama ada benang itu hidup. Kami akan merangkumi asas multithreading dalam Python dan cara mencipta benang baharu menggunakan kelas Thread. Kami kemudiannya akan menunjukkan cara menggunakan kaedah is_alive() untuk menyemak status urutan dan memberikan beberapa contoh untuk membantu anda memahami cara menggunakannya dalam amalan.
Pada penghujung artikel ini, anda harus mempunyai pemahaman yang kukuh tentang cara menggunakan kaedah is_alive() dalam Python untuk menyemak sama ada benang itu hidup. Mari mulakan!
Mari terokai kod yang ditunjukkan di bawah.
# Import the threading and time modules import threading import time # Define a function that will be run in a thread def my_func(): # Print a message indicating that the thread has started print("Thread starting...") # Sleep for 5 seconds to simulate some work being done time.sleep(5) # Print a message indicating that the thread has ended print("Thread ending...") # Create a new thread that will run the my_func function t = threading.Thread(target=my_func) # Check if the thread is alive before starting it print("Before starting, is the thread alive?", t.is_alive()) # Start the thread t.start() # Check if the thread is alive after starting it print("After starting, is the thread alive?", t.is_alive()) # Wait for the thread to finish before continuing with the main thread t.join() # Check if the thread is alive after joining it print("After joining, is the thread alive?", t.is_alive())Terjemahan bahasa Cina bagi
Pertama, modul threading dan masa diimport.
Fungsi my_func() ditakrifkan fungsi ini akan dijalankan dalam urutan berasingan.
Di dalam fungsi my_func(), mesej dicetak untuk menunjukkan bahawa utas telah bermula.
Fungsi time.sleep() dipanggil untuk mensimulasikan beberapa kerja yang sedang dilakukan dalam utas Fungsi ini menjeda pelaksanaan utas selama 5 saat.
Selepas fungsi time.sleep() selesai, cetak mesej lain untuk menunjukkan bahawa utas telah tamat.
T thread baharu dicipta menggunakan pembina Thread() dan my_func() dihantar sebagai fungsi sasaran kepada thread untuk dijalankan di dalamnya.
Kaedah is_alive() dipanggil pada objek benang t untuk menyemak sama ada benang itu hidup sebelum memulakannya.
Gunakan kaedah mula() untuk memulakan utas.
Selepas memulakan utas, panggil kaedah is_alive() sekali lagi untuk menyemak sama ada utas itu masih hidup.
Kaedah join() dipanggil pada objek benang untuk menunggu benang selesai sebelum meneruskan dengan benang utama.
Akhirnya, kaedah is_alive() dipanggil semula untuk memeriksa sama ada benang masih hidup selepas ia selesai berjalan dan disambungkan.
Untuk menjalankan kod di atas dalam terminal, kita perlu menjalankan arahan yang ditunjukkan di bawah.
perintah
python3 main.py
Sebaik sahaja kita menjalankan arahan di atas dalam terminal, kita akan mendapat output berikut dalam terminal
.Before starting, is the thread alive? False Thread starting... After starting, is the thread alive? True Thread ending... After joining, is the thread alive? False
Seperti yang anda lihat, kaedah is_alive() mengembalikan False sebelum utas dimulakan, menunjukkan bahawa utas itu belum dijalankan Selepas utas dimulakan, is_alive() mengembalikan True, menunjukkan bahawa utas sedang berjalan benang selesai dan bercantum, is_alive() mengembalikan False sekali lagi, menunjukkan bahawa benang tidak lagi berjalan.
Jika kita ingin menyemak sama ada benang berjalan dalam Python, kita mempunyai kaedah lain yang boleh kita gunakan.
Pertimbangkan kod yang ditunjukkan di bawah.
Contohimport threading # import the threading module import time # import the time module def my_func(): print("Thread starting...") # Print a message indicating that the thread has started time.sleep(5) # Sleep for 5 seconds to simulate some work being done print("Thread ending...") # Print a message indicating that the thread has ended t = threading.Thread(target=my_func) # Create a new thread that will run the my_func function print("Before starting, active threads:", threading.active_count()) # Get the number of active threads before starting the new thread t.start() # Start the thread print("After starting, active threads:", threading.active_count()) # Get the number of active threads after starting the new thread t.join() # Wait for the thread to finish before continuing with the main thread print("After joining, active threads:", threading.active_count()) # Get the number of active threads after joining the new threadTerjemahan bahasa Cina bagi
Sebelum memulakan utas baharu, kaedah active_count() digunakan untuk mendapatkan bilangan utas aktif Selepas memulakan utas baharu, active_count() digunakan sekali lagi untuk menyemak sama ada utas telah berjaya dimulakan. ) kaedah digunakan untuk menunggu utas baharu selesai sebelum meneruskan dengan utas utama Akhirnya, kaedah active_count() digunakan sekali lagi untuk menyemak sama ada utas baharu telah selesai dijalankan.
.
Untuk menjalankan kod di atas dalam terminal, kita perlu menjalankan arahan yang ditunjukkan di bawah.Perintah
python3 main.py
.
OutputBefore starting, active threads: 1 Thread starting... After starting, active threads: 2 Thread ending... After joining, active threads: 1
Kami telah melihat bahawa kaedah ini boleh digunakan untuk menentukan sama ada benang dimulakan dengan jayanya, sedang berjalan dan telah selesai dijalankan. Dengan menggunakan kaedah ini, pembangun boleh menulis aplikasi berbilang benang yang lebih mantap dan mengelakkan potensi pepijat dan isu prestasi. Secara keseluruhannya, modul threading Python menyediakan rangka kerja yang berkuasa dan fleksibel untuk bekerja dengan benang, dan memahami cara menyemak sama ada benang hidup adalah bahagian penting dalam menggunakan rangka kerja ini dengan berkesan.
Atas ialah kandungan terperinci Semak sama ada benang telah bermula dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!