Apakah Mutithreading di Python dan Bagaimana Mencapainya?



Ketahui apa itu multitasking di python. Ia juga menerangkan cara multithreading untuk membuat utas tanpa membuat kelas, dengan memperluas kelas Thread dan tanpa memanjangkannya.

Masa adalah faktor paling kritikal dalam hidup. Oleh kerana kepentingannya, dunia pengaturcaraan menyediakan pelbagai teknik dan teknik yang sangat membantu anda mengurangkan penggunaan masa, sehingga meningkatkan prestasi. Salah satu pendekatan tersebut ialah Multithreading di Python, yang merupakan salah satu konsep terpenting yang dibahas di bawah .

Berikut adalah ringkasan ringkas semua jurusan yang dibahas dalam artikel ini:





Apa itu berbilang tugas di Python?
Apa itu utas?
Apakah multithreading dalam python?
Bilakah menggunakan multithreading di Python?
Bagaimana mencapai Multithreading di Python?
Bagaimana cara membuat utas di Python?

Kelebihan menggunakan multithreading di Python



bagaimana saya memasang php

Sebagai permulaan, mari kita cuba memahami multitasking terlebih dahulu sebelum kita mula belajar mengenai Multithreading di Python.

Apa itu Multitasking di Python?

Multitasking, secara amnya, adalah kemampuan melakukan beberapa tugas secara serentak. Dari segi teknikal, multitasking merujuk kepada kemampuan sistem operasi untuk melakukan tugas yang berbeza pada masa yang sama. Contohnya , anda memuat turun sesuatu di PC anda serta mendengarkan lagu dan bermain permainan, dan lain-lain. Semua tugas ini dilakukan oleh OS yang sama dan diselaraskan. Ini hanyalah multitasking yang bukan hanya membantu anda menjimatkan masa tetapi juga meningkatkan produktiviti.

Terdapat dua jenis multitasking dalam OS:



  • Berasaskan proses
  • Berasaskan benang

Dalam artikel ini, anda akan belajar mengenai Berasaskan benang berbilang tugas atau Multithreading .

Apa itu utas?

utas-multithreading dalam python-edurekaBenang pada dasarnya adalah bebas aliran pelaksanaan. Satu proses boleh terdiri daripada pelbagai utas. Setiap utas dalam program melaksanakan tugas tertentu. Sebagai contoh, semasa anda bermain permainan, katakan FIFA di PC anda, permainan secara keseluruhan adalah satu proses , tetapi terdiri daripada beberapa utas yang bertanggungjawab untuk memainkan muzik, mengambil input dari pengguna, menjalankan lawan secara serentak, dan lain-lain. Semua ini adalah utas berasingan yang bertanggungjawab untuk menjalankan tugas yang berbeza dalam program yang sama.

Setiap proses mempunyai satu utas yang selalu berjalan. Ini adalah utas utamanya. Benang utama ini sebenarnya membuat objek utas kanak-kanak. Benang kanak-kanak juga dimulakan oleh utas utama. Saya akan menunjukkan kepada anda lebih jauh lagi dalam artikel ini bagaimana untuk memeriksa urutan berjalan semasa

Oleh itu, saya harap anda telah memahami dengan jelas apa itu utas. Melanjutkan, mari kita lihat apa itu Multithreading di Python.

Bilakah untuk menggunakan Multithreading di Python?

Multithreading sangat berguna untuk menjimatkan masa dan meningkatkan prestasi, tetapi tidak dapat digunakan di mana-mana.
Dalam contoh FIFA sebelumnya, utas muzik tidak bergantung pada utas yang mengambil input anda dan utas yang mengambil input anda tidak bergantung pada utas yang mengendalikan lawan anda. Benang ini berjalan secara bebas kerana tidak saling bergantung.

Oleh itu, multithreading boleh digunakan hanya apabila kebergantungan antara utas individu tidak ada.

Artikel ini selanjutnya menunjukkan bagaimana anda boleh mencapai Multithreading di Python.

Bagaimana mencapai Multithreading di Python?

Multithreading di Python dapat dicapai dengan mengimport menjalar modul.

Sebelum mengimport modul ini, anda perlu memasangnya. Untuk memasangnya di persekitaran anaconda anda, jalankan perintah berikut pada permintaan anaconda anda:

conda install -c conda-forge tbb

Setelah berjaya dipasang, anda boleh menggunakan mana-mana arahan berikut untuk mengimport modul utas:

import threading dari threading import *

Sekarang setelah anda memasang modul threading, mari kita terus maju dan melakukan Multithreading di Python.

Bagaimana cara membuat utas di Python?


Benang di Python boleh dibuat dengan tiga cara:

  1. Tanpa membuat kelas
  2. Dengan melanjutkan kelas Thread
  3. Tanpa melanjutkan kelas Thread

Tanpa membuat kelas

Multithreading di Python dapat dicapai tanpa membuat kelas juga. Berikut adalah contoh untuk menunjukkan perkara yang sama:

Contoh:

dari threading import * print (current_thread (). getName ()) def mt (): print ('Child Thread') child = Thread (target = mt) child.start () print ('Executing thread name:', current_thread ( ) .getName ())

Pengeluaran:

Main Thread Child Thread Melaksanakan nama benang: MainThread

Output di atas menunjukkan bahawa utas pertama yang ada adalah, utas utamanya. Benang utama ini kemudian membuat utas anak yang menjalankan fungsi dan kemudian penyataan cetakan akhir dilaksanakan lagi oleh utas utama.

Sekarang mari kita maju dan melihat bagaimana melakukan Multithreading di python dengan memperluas kelas Thread.

Dengan melanjutkan kelas Thread:

Apabila kelas kanak-kanak dibuat dengan memanjangkan kelas Thread, kelas kanak-kanak menunjukkan bahawa thread baru sedang melaksanakan beberapa tugas. Semasa melanjutkan kelas Thread, kelas kanak-kanak hanya boleh mengatasi dua kaedah iaitu kaedah __init __ () dan kaedah run (). Tidak ada kaedah lain yang boleh diganti selain dua kaedah ini.

Berikut adalah contoh cara memperluas kelas Thread untuk membuat utas:

Contoh:

import threading import time class mythread (threading.Thread): def run (self): for x in range (7): print ('Hi from child') a = mythread () a.start () a.join () cetak ('Bye from', current_thread (). GetName ())

Pengeluaran:
Hai dari anak
Hai dari anak
Hai dari anak
Hai dari anak
Hai dari anak
Hai dari anak
Hai dari anak
Selamat tinggal dari MainThread

Contoh di atas menunjukkan bahawa kelas myclass mewarisi kelas Thread dan kelas kanak-kanak iaitu myclass mengatasi kaedah larian. Secara lalai, parameter pertama fungsi kelas mana pun harus menjadi diri sendiri yang menjadi penunjuk ke objek semasa. Hasilnya menunjukkan bahawa utas kanak-kanak menjalankan kaedah run () dan utas utama menunggu pelaksanaan anak-anak selesai. Ini kerana fungsi join (), yang menjadikan utas utama menunggu anak selesai.

Kaedah membuat utas ini adalah kaedah yang paling digemari kerana kaedah standard. Tetapi sekiranya anda ingin membuat utas tanpa mewarisi atau melanjutkan kelas Thread, anda boleh melakukannya dengan cara berikut.

Tanpa Melanjutkan kelas Thread

Untuk membuat utas tanpa melanjutkan kelas Thread, anda boleh melakukan seperti berikut:
Contoh:

dari threading import * class ex: def myfunc (self): #self diperlukan sebagai parameter pertama dalam kelas func untuk x dalam julat (7): print ('Child') myobj = ex () thread1 = Thread (target = myobj. myfunc) thread1.start () thread1.join () print ('selesai')

Pengeluaran:

Anak
Anak
Anak
Anak
Anak
Anak
Anak
selesai

Benang kanak-kanak melaksanakan myfunc selepas itu utas utama melaksanakan penyataan cetak terakhir.

Kelebihan menggunakan threading

Multithreading mempunyai banyak kelebihan antaranya adalah seperti berikut:

  • Penggunaan sumber yang lebih baik
  • Memudahkan kod
  • Membolehkan berlakunya pelbagai tugas bersamaan dan selari
  • Mengurangkan penggunaan masa atau masa tindak balas, dengan itu, meningkatkan prestasi.

Berikut adalah contoh untuk memeriksa berapa lama kod dijalankan dengan dan tanpa multithreading dalam python:

 Contoh: 
masa import def sqr (n): for x in n: time.sleep (1) x% 2 def cube (n): for x in n: time.sleep (1) x% 3 n = [1,2,3 , 4,5,6,7,8] s = time.time () sqr (n) cube (n) e = time.time () cetak

Pengeluaran:

16.042309284210205

Di atas adalah masa output yang diambil untuk melaksanakan program tanpa menggunakan utas. Sekarang mari kita gunakan utas dan lihat apa yang berlaku pada program yang sama:

Contoh:

import threading dari threading import * import time def sqr (n): for x in n: time.sleep (1) print ('Sisa setelah dibahagi dengan 2', x% 2) def cube (n): for x in n: time.sleep (1) print ('Sisa setelah dibahagi dengan 3', x% 3) n = [1,2,3,4,5,6,7,8] start = time.time () t1 = Thread ( target = sqr, args = (n,)) t2 = Thread (target = cube, args = (n,)) t1.start () time.sleep (1) t2.start () t1.join () t2.join () end = time.time () cetak (permulaan akhir)
Pengeluaran: 9.040220737457275

Output di atas jelas menunjukkan bahawa masa yang diambil ketika kita menggunakan utas jauh lebih sedikit dibandingkan dengan masa yang diperlukan untuk program yang sama dijalankan tanpa menggunakan utas.

Saya harap anda jelas dengan konsep yang diliputi di bawah artikel ini yang berkaitan dengan Multithreading di Python. Pastikan berlatih semaksimum mungkin kerana ini adalah salah satu konsep terpenting yang digunakan dalam pengaturcaraan.

Ada soalan untuk kami? Sila sebutkan di bahagian komen blog 'Multithreading in Python' ini dan kami akan menghubungi anda secepat mungkin.

Untuk mendapatkan pengetahuan mendalam tentang Python bersama dengan pelbagai aplikasinya, anda boleh mendaftar secara langsung dengan sokongan 24/7 dan akses seumur hidup.