Media Belajar Bahasa Pemrograman | by APPKEY

PythonTutorial Python 36 : Teknik Python Multithread untuk Pemula

Tutorial Python 36 : Teknik Python Multithread untuk Pemula

-

Last Updated on September 22, 2022 by

Halo pembaca setia codekey.id! Sudah berapa lama Anda belajar Pyhton dan menggunakannya untuk membuat aplikasi? Bahasa pemrograman Python bukanlah hal yang asing karena sangat sering digunakan. Bagi Anda yang mulai tertarik lebih jauh belajar Python, maka Python multithread atau yang biasa disebut juga dengan threading ini, wajib Anda pelajari.

Kita ketahui bersama bahwa Pyton memiliki satu kelemahan yaitu dalam pemrosesan data. Namun dengan menggunakan threading Anda dapat mengatasi masalah satu ini. Kali ini kami akan membahas berbagai hal yang harus Anda ketahui tentang Python Multithread. Berikut sub materinya:

  • Kelebihan Python Multithread
  • Memulai Thread Baru
  • Modul untuk Python Multithread
  • Membuat Thread Dengan Modul Multithread
  • Menyinkronkan Thread
  • Python Multithread: Antrian Prioritas

Kelebihan Python Multithread

Sebelum membahas kelebihan teknik Multithread pada bahasa Python, mari kita bahas pengertiannya terlebih dahulu. Teknik Multithread pada bahasa Python adalah teknik yang digunakan untuk nenjalankan beberapa threads yang mirip dengan menjalankan beberapa program berbeda secara bersamaan. Di mana manfaat menggunakan tetapi dengan manfaat berikut

  • Beberapa utas dalam suatu proses berbagi ruang data yang sama dengan utas utama dan karenanya dapat berbagi informasi atau berkomunikasi satu sama lain dengan lebih mudah daripada jika mereka adalah proses yang terpisah.
  • Utas terkadang disebut proses ringan dan tidak memerlukan banyak memori di atas kepala; mereka lebih murah daripada proses.

Sebuah thread memiliki awal, urutan eksekusi, dan kesimpulan. Di dalam thread memiliki pointer instruksi yang melacak di mana dalam sebuah konteksnya sedang berjalan saat ini. Berikut poin-poinnya

  • Thread dapat didahului (terganggu)
  • Thread dapat ditunda sementara (juga dikenal sebagai sleeping) sementara utas lainnya sedang berjalan – ini disebut yielding atau menghasilkan.

Memulai Thread Baru

Untuk mulai membuat sebuah sebuah threading atau utas lain, Anda dapat menggunakan metode berikut ini, perhatikan code berikut:

thread.start_new_thread ( function, args[, kwargs] )

Dengan menggunakan coding di atas, ini memungkinkan Anda untuk menggunakan cara yang cepat dan efesien untuk membuat sebuah thread. Cara ini dapat Anda terapkan baik dengan menggunakan Linux maupun Windows.

Pemanggilan metode dengan pengembalian segera dan thread baru dimulai serta memanggil fungsi dengan daftar args yang diteruskan. Ketika fungsi kembali, thread yang dijalankan akan berakhir.

Di sini, args adalah tupel argumen; di mana penggunaan Tuple kosong ialah untuk memanggil fungsi tanpa memberikan argumen apa pun. kwargs adalah kamus opsional pada argumen kata kunci.

Agar lebih memahaminya, perhatikan contoh berikut ini:

#!/usr/bin/python

import thread
import time

# Define a function for the thread
def print_time( threadName, delay):
   count = 0
   while count < 5:
      time.sleep(delay)
      count += 1
      print "%s: %s" % ( threadName, time.ctime(time.time()) )

# Create two threads as follows
try:
   thread.start_new_thread( print_time, ("Thread-1", 2, ) )
   thread.start_new_thread( print_time, ("Thread-2", 4, ) )
except:
   print "Error: unable to start thread"

while 1:
   pass

Setelah Anda menjalankan coding di atas, berikut ini output yang akan Anda dapatkan:

Thread-1: Thu Jan 22 15:42:17 2009
Thread-1: Thu Jan 22 15:42:19 2009
Thread-2: Thu Jan 22 15:42:19 2009
Thread-1: Thu Jan 22 15:42:21 2009
Thread-2: Thu Jan 22 15:42:23 2009
Thread-1: Thu Jan 22 15:42:23 2009
Thread-1: Thu Jan 22 15:42:25 2009
Thread-2: Thu Jan 22 15:42:27 2009
Thread-2: Thu Jan 22 15:42:31 2009
Thread-2: Thu Jan 22 15:42:35 2009

Meskipun sangat efektif untuk melakukan Python Multithread atau threading tingkat rendah, namun modul thread ini sangat terbatas jika dibandingkan dengan modul threading yang lebih baru.

Modul untuk Python Multithread

Modul threading yang lebih baru yang disertakan dengan Python 2.4 yang memberikan dukungan tingkat tinggi. Sehingga modul baru ini jauh lebih kuat untuk melakukan threading daripada modul thread yang telah kita bahas pada bagian sebelumnya.

Modul threading ini memperlihatkan semua metode modul thread dan menyediakan beberapa metode tambahan. Berikut ini metode tambahan yang ada dan fungsinya:

  • activeCount() Berfungsi untuk mengembalikan jumlah objek thread yang aktif.
  • currentThread() Memiliki fungsi untuk mengembalikan jumlah objek thread dalam kontrol thread pemanggil.
  • enumerate() Berfungsi mengembalikan daftar semua objek thread yang sedang aktif.

Selain metode, modul threading terbaru ini memiliki kelas Thread yang mengimplementasikan threading. Metode yang disediakan oleh kelas Thread ialah sebagai berikut:

  • run() Metode run() merupakan titik masuk untuk sebuah thread.
  • start() Metode start() berfungsi memulai thread dengan memanggil metode run.
  • join([time]) Join() berfungsi untuk menunggu thread berakhir.
  • isAlive() Metode isAlive() akan memeriksa apakah sebuah thread masih dieksekusi atau tidak.
  • getName() Metode getName() ini dapat digunakan mengembalikan nama thread.
  • setName() Metode setName() akan menetapkan nama sebuah thread.

Membuat Thread Dengan Modul Multithread

Untuk mengimplementasikan sebuah threadi baru menggunakan modul threading, Anda harus melakukan beberapa langkah berikut ini:

  • Menentukan subclass baru dari kelas Thread yang ada.
  • Mengganti metode __init__(self [,args]) untuk menambahkan argumen tambahan.
  • Hal terakhir ialah mengganti metode run(self [,args]) untuk mengimplementasikan apa yang harus dilakukan thread saat dimulai.

Setelah Anda membuat subkelas Thread baru, Anda dapat membuat turunannya dan kemudian memulai thread baru dengan memanggil start(), yang pada gilirannya nanti akan memanggil metode run().

Agar lebih jelas, perhatikan contoh pembuatan thread di bawah ini:

#!/usr/bin/python

import threading
import time

exitFlag = 0

class myThread (threading.Thread):
   def __init__(self, threadID, name, counter):
      threading.Thread.__init__(self)
      self.threadID = threadID
      self.name = name
      self.counter = counter
   def run(self):
      print "Starting " + self.name
      print_time(self.name, 5, self.counter)
      print "Exiting " + self.name

def print_time(threadName, counter, delay):
   while counter:
      if exitFlag:
         threadName.exit()
      time.sleep(delay)
      print "%s: %s" % (threadName, time.ctime(time.time()))
      counter -= 1

# Create new threads
thread1 = myThread(1, "Thread-1", 1)
thread2 = myThread(2, "Thread-2", 2)

# Start new Threads
thread1.start()
thread2.start()

print "Exiting Main Thread"

Jika Anda telah membuat dengan benar, maka akan muncul output seperti di bawah ini:

Starting Thread-1
Starting Thread-2
Exiting Main Thread
Thread-1: Thu Mar 21 09:10:03 2013
Thread-1: Thu Mar 21 09:10:04 2013
Thread-2: Thu Mar 21 09:10:04 2013
Thread-1: Thu Mar 21 09:10:05 2013
Thread-1: Thu Mar 21 09:10:06 2013
Thread-2: Thu Mar 21 09:10:06 2013
Thread-1: Thu Mar 21 09:10:07 2013
Exiting Thread-1
Thread-2: Thu Mar 21 09:10:08 2013
Thread-2: Thu Mar 21 09:10:10 2013
Thread-2: Thu Mar 21 09:10:12 2013
Exiting Thread-2
Artikel Terkait  Tutorial Python 7 : Python String Format dan Cara Mudahnya

Menyinkronkan Thread

Pada modul threading yang telah disediakan oleh Python, di dalamnya mencakup mekanisme penguncian sederhana yang memungkinkan Anda untuk menyinkronkan thread yang ada. Kunci baru akan dibuat dengan memanggil metode Lock(), di mana metode ini yang akan mengembalikan kunci baru.

Metode acquire(blocking) dari objek kunci baru digunakan untuk memaksa threads berjalan secara sinkron. Parameter blocking opsional ini akan memungkinkan Anda untuk mengontrol apakah threads akan menunggu untuk mendapatkan kunci.

Jika blocking diatur ke 0, threads akan segera kembali dengan nilai 0 jika kunci tidak dapat diperoleh dan dengan 1 jika kunci diperoleh. Jika pemblokiran diatur ke 1, threads akan memblokir dan menunggu kunci untuk dilepaskan.

Metode release() dari objek kunci baru digunakan untuk melepaskan kunci ketika tidak lagi diperlukan. Berikut ini contoh penerapannya:

#!/usr/bin/python

import threading
import time

class myThread (threading.Thread):
   def __init__(self, threadID, name, counter):
      threading.Thread.__init__(self)
      self.threadID = threadID
      self.name = name
      self.counter = counter
   def run(self):
      print "Starting " + self.name
      # Get lock to synchronize threads
      threadLock.acquire()
      print_time(self.name, self.counter, 3)
      # Free lock to release next thread
      threadLock.release()

def print_time(threadName, delay, counter):
   while counter:
      time.sleep(delay)
      print "%s: %s" % (threadName, time.ctime(time.time()))
      counter -= 1

threadLock = threading.Lock()
threads = []

# Create new threads
thread1 = myThread(1, "Thread-1", 1)
thread2 = myThread(2, "Thread-2", 2)

# Start new Threads
thread1.start()
thread2.start()

# Add threads to thread list
threads.append(thread1)
threads.append(thread2)

# Wait for all threads to complete
for t in threads:
    t.join()
print "Exiting Main Thread"

Setelah menjalankan coding di atas, jika code-code yang dimasukkan benar, maka Anda akan mendapatkan hasil sebagai berikut:

Starting Thread-1
Starting Thread-2
Thread-1: Thu Mar 21 09:11:28 2013
Thread-1: Thu Mar 21 09:11:29 2013
Thread-1: Thu Mar 21 09:11:30 2013
Thread-2: Thu Mar 21 09:11:32 2013
Thread-2: Thu Mar 21 09:11:34 2013
Thread-2: Thu Mar 21 09:11:36 2013
Exiting Main Thread

Python Multithread : Antrian Prioritas

Modul Queue atau antrian akan memungkinkan Anda untuk membuat objek antrian baru yang dapat menampung sejumlah item tertentu. Di bawah ini merupakan metode yang dapat Anda gunakan untuk mengontrol antrian Multithread:

  • get()Get() berfungsi untuk menghapus dan mengembalikan item dari antrian.
  • put() Put berfungsi menambahkan item ke antrian.
  • qsize() qsize() digunakan untuk mengembalikan jumlah item yang sedang dalam antrian.
  • kosong() Kosong() berfungsi mengembalikan True jika antrian kosong; jika tidak, maka hasilnya ialah false.
  • full() the full() digunakan untuk mengembalikan True jika antrian penuh; jika tidak, output yang ditampilkan adalah false.

Perhatikan contoh penerapannya pada coding di bawah ini:

#!/usr/bin/python

import Queue
import threading
import time

exitFlag = 0

class myThread (threading.Thread):
   def __init__(self, threadID, name, q):
      threading.Thread.__init__(self)
      self.threadID = threadID
      self.name = name
      self.q = q
   def run(self):
      print "Starting " + self.name
      process_data(self.name, self.q)
      print "Exiting " + self.name

while not exitFlag:
      queueLock.acquire()
         if not workQueue.empty():
            data = q.get()
            queueLock.release()
            print "%s processing %s" % (threadName, data)
         else:
            queueLock.release()
         time.sleep(1)

threadList = ["Thread-1", "Thread-2", "Thread-3"]
nameList = ["One", "Two", "Three", "Four", "Five"]
queueLock = threading.Lock()
workQueue = Queue.Queue(10)
threads = []
threadID = 1

# Create new threads
for tName in threadList:
   thread = myThread(threadID, tName, workQueue)
   thread.start()
   threads.append(thread)
   threadID += 1

# Fill the queue
queueLock.acquire()
for word in nameList:
   workQueue.put(word)
queueLock.release()

# Wait for queue to empty
while not workQueue.empty():
   pass

# Notify threads it's time to exit
exitFlag = 1

# Wait for all threads to complete
for t in threads:
   t.join()
print "Exiting Main Thread"

Jika coding yang dibuat benar, maka Anda akan mendapatkan output sebagai berikut:

Starting Thread-1
Starting Thread-2
Starting Thread-3
Thread-1 processing One
Thread-2 processing Two
Thread-3 processing Three
Thread-1 processing Four
Thread-2 processing Five
Exiting Thread-3
Exiting Thread-1
Exiting Thread-2
Exiting Main Thread

Nah itulah tadi pembahasan menarik dari Codekey.id tentang Python Multithread atau threading khusus untuk Anda. Apakah Anda dapat memahami dengan baik? Jika Anda menyukai artikel ini, jangan lupa untuk membaca berbagai artikel menarik tentang berbagai bahasa pemrograman hanya di codekey.id ! sekian artikel kali ini, jangan lupa untuk terus berlatih!


Jasa Pembuatan Aplikasi, Website dan Internet Marketing | PT APPKEY
PT APPKEY adalah perusahaan IT yang khusus membuat aplikasi Android, iOS dan mengembangkan sistem website. Kami juga memiliki pengetahuan dan wawasan dalam menjalankan pemasaran online sehingga diharapkan dapat membantu menyelesaikan permasalahan Anda.

Jasa Pembuatan Aplikasi

Jasa Pembuatan Website

Jasa Pembuatan Paket Aplikasi

Jasa Pembuatan Internet Marketing

Tutorial

Subscribe Sekarang

Dapatkan beragam informasi menarik tentang bahasa pemrograman langsung melalui email Anda. Subscribe sekarang dan terus belajar bersama kami!

Blog Post Ranking 10

Tutorial PHP 22 : Cara Membuat Redirect PHP dengan Cepat dan Mudah

Jika Anda melakukan browsing di browser kesayangan Anda, mungkin Anda pernah melihat link yang berisikan “php redirect” atau yang...

Tutorial PHP 23 : Cara Membuat Messages Alert PHP

Alert box atau alert messages digunakan di situs web untuk menampilkan pesan peringatan kepada pengguna bahwa mereka telah memasukkan...

Tutorial PHP 2 : Cara Install PHP, Langkah Awal Belajar PHP

PHP adalah bahasa pemrograman gratis dan open source. Secara teknis tidak perlu menginstal PHP: sebagian besar host web dan...

Tutorial Python 9 : Cara Membuat Looping Python

Pada artikel sebelumnya, Codekey telah menjelaskan tentang Operasi Kondisional Python yang di dalamnya menyinggung tentang percabangan dan perulangan. Belajar...

Tutorial HTML/CSS 23 : Cara Membuat Form Sederhana dengan HTML

Form memiliki peran yang sangat krusial bagi website atau aplikasi untuk menjaga sistem keamanannya. Form HTML digunakan untuk mengumpulkan...

Tutorial SQL 8 : Constraint SQL, Bagaimana Fungsi dan Penggunaannya?

Pada artikel sebelumnya Anda telah mempelajari tentang wildcard SQL, pada artikel kali ini kami akan menjelaskan tentang constraint SQL. Jika...

Tutorial Javascript 8 : Array Javascript, Panduan Lengkap Cara Membuatnya

Seperti bahasa pemrograman yang berorientasi objek lainnya, dalam JavaScript juga terdapat array. Jika Anda memiliki banyak objek yang ingin...

Tutorial SQL 20 : Mari Pelajari Cara Menggunakan Fungsi GROUP by SQL

Pada pembahasan seri Tutorial SQL ke- 20 ini, Codekey akan membahas tentang GROUP BY yang merupakan statement di dalam...

Tutorial Python 7 : Python String Format dan Cara Mudahnya

Anda ingin belajar Python dan ingin menjadi ahli dalam bahasa pemrograman Python? Mari belajar bersama Codekey! Pada pembahasan kali...

Tutorial Python 8 : Langkah Mudah Membuat Operasi Kondisional pada Python

Pada pembahasan sebelumnya, Codekey telah menjelaskan kepada Anda tentang pengoperasian string pada Python mulai dari menggabungkan hingga memanipulasi string...

Bisnis

Online Service

Peluang Bisnis

Model Bisnis

Entrepreneurship

Uang

Ketrampilan

Outsourcing

Monetize

Pemasaran

SEO

Internet Marketing

Dasar Pemasaran

Strategi Pemasaran

Situs Web Analitik

Iklan

Teknologi

Teknologi Terbaru

AI

Komputer

Jaringan

Paling Sering dibaca
Mungkin Anda Menyukainya