Threading pada Python

Khairu Aqsara Sudirman

Khairu Aqsara Sudirman

Feb 26, 2020 — 2 mins read

Tiga tahun belakangan ini saya mulai mengulik python, karena tuntutan pekerjaan, mau tidak mau belajar sambil bekerja, tetapi seiring waktu saya semakin tertarik dengan bahasa pemrograman satu ini, dalam tulisan kali ini saya ingin berbagi dengan teman-teman tentang Threading pada python.

Threading adalah salah satu cara bagaimana kita bisa melakukan konkurensi atau prinsip pararel dalam menjalankan sebuah operasi. Dengan Threading sebuah instruksi akan dijalankan tanpa harus menunggu proses sebelumnya selesai, Threading akan memisahkan setiap proses dan mengeksekusinya secara terpisah.

Tapi ada satu hal penting yang harus kita perhatikan saat menggunakan Threading, yaitu jumlah resouces pada CPU, karena threading akan menggunakan Resouces pada CPU bukan pada Memory.

Ada dua cara menjalankan Threading pada python, yang pertama dengan cara mendifinisikan instance dari class Thread pada fungsi yang akan kita jalankan, yang kedua dengan cara meng-inheritkan class Thread dan kemudian memasukan process thread pada fungsi run

Cara pertama cocok kita gunakan untuk proses yang sederhana, karena memang peng-inisialisasikanya juga cukup sederhana.

import threading
def fungsi_sederhana:
	print("Threading Dimulai")
	while(True):
		print("Loop panjang dan berulang....")
proses = threading.Thread(group=None, target=fungsi_sederhana).start()

Sedangkan cara kedua biasanya digunakan untuk proses yang lebih kompleks, cara ini biasanya juga dipadukan dengan Queue, agar thread berjalan sesuai dengan urutan pada saat penginisialisainya, tetapi prosesnya nanti akan berjalan secara pararel.

import threading
import queue
class Threadingku (threading.Thread):
	def __init__(self):
		#inisialisasi
	def run(self):
		#proses yang harus dilakukan
	def lain_lain(self):
		#fungsi tambahan
threadku= Threadingku().start()

dari barisan kode diatas, kita bisa melihat perbedaan cara penggunaan Threading, baik cara pertama dan kedua memiliki perbedaan yang terletak pada proses inisialisasi kapan thread harus dijalankan.

untuk lebih memperjelas bagaimaan implementasinya, kita akan mencoba membuat sebuah program kecil untuk mengambil konten dari sebuah website dan menghitung panjang kontenya tanpa menggunakan Threading.

import urllib3
def ambil_panjang_konten(url):
	http = urllib3.PoolManager()
	r = http.request('GET', url)
	print (len(r.data))

urls = [
	"https://www.khairu-aqsara.net/blog/geospatial-toolkit-with-python-maup",
	"https://www.khairu-aqsara.net/blog/async-await-javascript",
	"https://www.khairu-aqsara.net/blog/prmoise-pada-javascript"
]
for url in urls:
	ambil_panjang_konten(url)

sekarang mari kita modifikasi agar menggunakan Threading, dan kita bandingkan hasilnya.

import urllib3
import threading

def ambil_panjang_konten(url):
	http = urllib3.PoolManager()
	r = http.request('GET', url)
	print (len(r.data))
urls = [
	"https://www.khairu-aqsara.net/blog/geospatial-toolkit-with-python-maup",
	"https://www.khairu-aqsara.net/blog/async-await-javascript",
	"https://www.khairu-aqsara.net/blog/prmoise-pada-javascript"
]
threads = []
for url in urls:
	thread = threading.Thread(target=ambil_panjang_konten, args=(url,))
	threads.append(thread)
	
for t in threads:
	t.start()
	t.join()

dari hasil pada gambar diatas, kita bisa melihat waktu eksekusi yang dijalankan program kecil diatas tanpa menggunakan threading, mungkin tidak terlalu terasa karena memang prosesnya kecil.

python
Read More

Mendeteksi Virus Corona Melalui Hasil Scan X-Ray Menggunakan Tensorflow dan Keras

Seperti kebanyakan orang, saya sendiri merasa deg-deg-an dengan wabah virus corona ini, pilek dikit takut corona, padahal biasanya juga sering pilek santai aja, tetapi sekarang pilek itu rasanya beda gitu.... Jujur saya, sebagai manusia hal yang paling menakutkan untuk saat ini adalah kurang nya informasi yang benar tentang virus corona, banyak informasi yang simpang siur dan tidak jelas sumbernya.

Read More

Virtual Env Pada Python

Vritualenv adalah tools untuk membuat lingkungan python virtual yang terisolasi. Terisolasi artinya tertutup dan tidak bisa diakses dari dunia luar.