Anda di halaman 1dari 5

Modul 3 Pemrograman Jaringan

Model Multithread
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.
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:
# Python program to illustrate the concept
# of threading
# importing the threading module
import threading

def print_cube(num):
# function to print cube of given num
print("Cube: {}" .format(num * num * num))

def print_square(num):
# function to print square of given num
print("Square: {}" .format(num * num))

if __name__ =="__main__":
# creating thread
t1 = threading.Thread(target=print_square, args=(10,))
t2 = threading.Thread(target=print_cube, args=(10,))

# starting thread 1
t1.start()
# starting thread 2
t2.start()

# wait until thread 1 is completely executed


t1.join()
# wait until thread 2 is completely executed
t2.join()

# both threads completely executed


print("Done!")

Output
Tugas Modul
Gabungkan aplikasi dibawah ini dengan modul sebelumnya.

Server.py
import socket
d =
{'1':('tomat',20000),'2':('kentang',10000),'3':('bawang',40000),'4':('wortel'
,10000),'5':('apel',45000)}
def Main():
host = socket.gethostbyname(socket.gethostname())
port = 5559
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((host,port))
print('\nList Barang->')
for keys in d.keys():
name , cost = d[keys]
print('Keys->',keys,'item -> :',name,'\n','The cost is :',cost)
message = input('Masukan item yang anda butuhkan ->')
while True:
s.send(message.encode('ascii'))
data = s.recv(1024)
print('Recieved from the server :',str(data.decode('ascii')))
ans = input('\nYakin Ingin membeli ini? :')
if ans == 'y':
message = input('Masukan item yang anda butuhkan-> ->')
else:
break
s.close()

if __name__ == '__main__':
Main()
Client.py
import socket
from _thread import *
import threading
print_lock = threading.Lock()
d =
{'1':('tomat',20000),'2':('kentang',10000),'3':('bawang',40000),'4':('wortel'
,10000),'5':('apel',45000)}
def threaded(c):
while True:
print('\nList Barang->')
for keys in d.keys():
name , cost = d[keys]
print('Keys->',keys,'item -> :',name,'\n','The cost is :',cost)
data = c.recv(1024)
if not data:
print('Bye')
print_lock.release()
break
name , cost = d[str(data.decode('ascii'))]
print('Item selected-> :',name,'\n','Cost-> :',cost)
ans = input('\nDo you want to checkout->')
if ans =='y':
c.send(str.encode('\nYour bill is :'+str(cost)))
else:
print('Thank u')
c.close()

def Main():
host = socket.gethostbyname(socket.gethostname())
port = 5559
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((host,port))
s.listen(5)
print(f"Server aktif dengan IP {host} dan Port {port}")
while True:
c,addr = s.accept()
print_lock.acquire()
print('Connected to :',addr[0],':',addr[1])
start_new_thread(threaded,(c,))
s.close()

if __name__ == '__main__':
Main()

Anda mungkin juga menyukai