From 459e267275f3239a6f6675e6283b3c99c8f94e1e Mon Sep 17 00:00:00 2001 From: IraDwita Date: Wed, 20 Apr 2022 17:22:18 +0700 Subject: [PATCH] Quis 1 Sistem Tersebar Ira Dwita Syafitri --- .../Barrier.py | 28 +++++++++ .../Condition.py | 40 +++++++++++++ .../MyThreadClass.py | 41 +++++++++++++ .../MyThreadClass_lock.py | 44 ++++++++++++++ .../MyThreadClass_lock_2.py | 48 ++++++++++++++++ .../Ira_Dwita_Syafitri_Quis_Sister1/Rlock.py | 57 +++++++++++++++++++ .../Semaphore.py | 26 +++++++++ .../Thread_definition.py | 19 +++++++ .../Thread_determine.py | 29 ++++++++++ .../Thread_name_and_processes.py | 36 ++++++++++++ 10 files changed, 368 insertions(+) create mode 100644 QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Barrier.py create mode 100644 QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Condition.py create mode 100644 QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/MyThreadClass.py create mode 100644 QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/MyThreadClass_lock.py create mode 100644 QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/MyThreadClass_lock_2.py create mode 100644 QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Rlock.py create mode 100644 QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Semaphore.py create mode 100644 QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Thread_definition.py create mode 100644 QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Thread_determine.py create mode 100644 QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Thread_name_and_processes.py diff --git a/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Barrier.py b/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Barrier.py new file mode 100644 index 0000000..e4ca577 --- /dev/null +++ b/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Barrier.py @@ -0,0 +1,28 @@ + + +from random import randrange +from threading import Barrier, Thread +from time import ctime, sleep + +jumlah_running = 5 +selesai = Barrier(jumlah_running) +mobil = ['Honda', 'Toyota', 'Daihatsu', 'Hyundai', 'Suzuki', 'Mitsubishi', 'Nissan'] + +def jenis(): + brand = mobil.pop() + sleep(randrange(2, 5)) + print('%s Merupakan brand mobil \n' % (brand)) + selesai.wait() + +def main(): + threads = [] + print('Jenis Brand Mobil!') + for i in range(jumlah_running): + threads.append(Thread(target=jenis)) + threads[-1].start() + for thread in threads: + thread.join() + print('Udah Dulu Ya!') + +if __name__ == "__main__": + main() diff --git a/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Condition.py b/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Condition.py new file mode 100644 index 0000000..70e6a46 --- /dev/null +++ b/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Condition.py @@ -0,0 +1,40 @@ +#import library +import threading +import time +import random + + +condition = threading.Condition() #membuat variabel condition untuk menampung fitur condition pada threading + +#membuat class + +class Ngambil(): + #membuat fungsi + def lalin(self): + print('Berhenti') + + with condition: + print('Lampu Merah') + condition.wait() + print('Udah hijau, jalan') + + def jalan(self): + print('nunggu lajur yang lain') + + with condition: + time = random.randint(25,30) + waktu = random.randint(5,20) + print('{} detik lagi'.format(time)) + print('{} detik lagi'.format(waktu)) + condition.notify() + +ambil = Ngambil() +lalin = threading.Thread(target=ambil.lalin) +jalan = threading.Thread(target=ambil.jalan) + + +lalin.start() +jalan.start() + +lalin.join() +jalan.join() \ No newline at end of file diff --git a/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/MyThreadClass.py b/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/MyThreadClass.py new file mode 100644 index 0000000..21e0e88 --- /dev/null +++ b/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/MyThreadClass.py @@ -0,0 +1,41 @@ +from random import randint +from threading import Thread +import time + +class balapan (Thread): + def __init__(self, x, duration): + Thread.__init__(self) + self.x = x + self.duration = duration + def run(self): + print (self.x + "\n") + time.sleep(self.duration) + print (self.x + " finish dalam",self.duration,"detik \n") + + +def main(): + print("Bersedia") + time.sleep(randint(1,5)) + print("Mulai \n") + # Thread Creation + thread1 = balapan("Rosi", randint(1,10)) + thread2 = balapan("Marques", randint(1,10)) + thread3 = balapan("Lorenzo", randint(1,10)) + + # Thread Running + thread1.start() + thread2.start() + thread3.start() + + # Thread joining + thread1.join() + thread2.join() + thread3.join() + + +if __name__ == "__main__": + main() + + + + diff --git a/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/MyThreadClass_lock.py b/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/MyThreadClass_lock.py new file mode 100644 index 0000000..de85e2c --- /dev/null +++ b/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/MyThreadClass_lock.py @@ -0,0 +1,44 @@ +import threading +import time +from threading import Thread +from random import randint + +# Lock Definition +threadLock = threading.Lock() + +class Paket (Thread): + def __init__(self, barang, waktu): + Thread.__init__(self) + self.barang = barang + self.waktu = waktu + def run(self): + threadLock.acquire() + print ("Paket " + self.barang + "dikirim \n") + time.sleep(self.waktu) + print ("Paket " + self.barang + " diterima dalam ",self.waktu,"hari\n") + threadLock.release() + + +def main(): + start_time = time.time() + # Thread Creation + t1 = Paket("Pakaian ", randint(3,7)) + t2 = Paket("Sepatu ", randint(3,7)) + t3 = Paket("Kerudung ", randint(3,7)) + # Thread Running + t1.start() + t2.start() + t3.start() + + # Thread joining + t1.join() + t2.join() + t3.join() + + +if __name__ == "__main__": + main() + + + + diff --git a/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/MyThreadClass_lock_2.py b/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/MyThreadClass_lock_2.py new file mode 100644 index 0000000..7b96369 --- /dev/null +++ b/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/MyThreadClass_lock_2.py @@ -0,0 +1,48 @@ +import threading +import time +import os +from threading import Thread +from random import randint + +# Lock Definition +threadLock = threading.Lock() + +class Paket (Thread): + def __init__(self, barang, waktu): + Thread.__init__(self) + self.barang = barang + self.waktu = waktu + def run(self): + threadLock.acquire() + print ("Paket " + self.barang + "dikirim \n") + threadLock.release() + time.sleep(self.waktu) + print ("Paket " + self.barang + " diterima dalam ",self.waktu,"hari\n") + + +def main(): + start_time = time.time() + + # Thread Creation + t1 = Paket("Pakaian ", randint(3,7)) + t2 = Paket("Sepatu ", randint(3,7)) + t3 = Paket("Kerudung ", randint(3,7)) + + # Thread Running + t1.start() + t2.start() + t3.start() + + # Thread joining + t1.join() + t2.join() + t3.join() + + + +if __name__ == "__main__": + main() + + + + diff --git a/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Rlock.py b/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Rlock.py new file mode 100644 index 0000000..960e62e --- /dev/null +++ b/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Rlock.py @@ -0,0 +1,57 @@ +import threading +import time +from random import randint + +class Kuis: + def __init__(self): + self.rlock = threading.RLock() + self.stock_baju = 0 + + def stok(self,value): + with self.rlock: + self.stock_baju += value + + def tambah(self): + with self.rlock: + self.stok(1) + + def terjual(self): + with self.rlock: + self.stok(-1) + +def tambah(Kuis, baju): + print("Tambahan stok ", baju) + while baju: + Kuis.tambah() + time.sleep(randint(1,5)) + baju -= 1 + print("stok baju yang di dijual", baju) + +def terjual(Kuis, baju): + print("Stok yang terjual") + while baju: + Kuis.terjual() + time.sleep(randint(1,5)) + baju -= 1 + print("stok baju yang ditambahkan", baju) + + +def main(): + items = 10 + kuis = Kuis() + + t1 = threading.Thread(target=tambah, \ + args=(kuis, randint(10,20))) + t2 = threading.Thread(target=terjual, \ + args=(kuis, randint(1,10))) + + t1.start() + t2.start() + + + t1.join() + t2.join() + + +if __name__ == "__main__": + main() diff --git a/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Semaphore.py b/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Semaphore.py new file mode 100644 index 0000000..082474a --- /dev/null +++ b/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Semaphore.py @@ -0,0 +1,26 @@ +#imprt library +import threading + +bounded_semaphore = threading.BoundedSemaphore(100) #penggunaan semaphore + +#membuat fungsi +def f1(): + bounded_semaphore.acquire() + print("%s acquired lock." % (threading.current_thread().name)) + print(bounded_semaphore._value) + bounded_semaphore.release() + print("%s released lock." % (threading.current_thread().name)) + print(bounded_semaphore._value) + +t1 = threading.Thread(target=f1) +t2 = threading.Thread(target=f1) +t3 = threading.Thread(target=f1) +t4 = threading.Thread(target=f1) +t5 = threading.Thread(target=f1) +t1.start() +t2.start() +t3.start() +t4.start() +t5.start() + +print("Main Thread Exited.", threading.main_thread()) \ No newline at end of file diff --git a/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Thread_definition.py b/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Thread_definition.py new file mode 100644 index 0000000..4c196fe --- /dev/null +++ b/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Thread_definition.py @@ -0,0 +1,19 @@ +import threading +from random import randint + +npm=randint(1184001, 1184113) + +def kuis(npm): + return print('Antrian sidang NPM {}'.format(randint(1184001,1184113))) + + +def main(): + masuk = [] + for i in range(10): + mulai = threading.Thread(target=kuis, args=(i,)) + masuk.append(mulai) + mulai.start() + mulai.join() + +if __name__ == "__main__": + main() diff --git a/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Thread_determine.py b/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Thread_determine.py new file mode 100644 index 0000000..edb1983 --- /dev/null +++ b/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Thread_determine.py @@ -0,0 +1,29 @@ +import threading +import time + + +def merah(): + print ('Lampu '+ str(threading.currentThread().getName())+( '--> Berhenti \n')) + return + +def kuning(): + print ('Lampu '+ str(threading.currentThread().getName())+( '--> Bersiap \n')) + return + +def hijau(): + time.sleep(2) #waktu jeda + print ('Lampu '+str(threading.currentThread().getName())+( '--> Jalan \n')) + return + + +t1 = threading.Thread(name='Merah', target=merah) +t2 = threading.Thread(name='kuning', target=kuning) +t3 = threading.Thread(name='hijau',target=hijau) + +t1.start() +t2.start() +t3.start() + +t1.join() +t2.join() +t3.join() diff --git a/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Thread_name_and_processes.py b/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Thread_name_and_processes.py new file mode 100644 index 0000000..1edad54 --- /dev/null +++ b/QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Thread_name_and_processes.py @@ -0,0 +1,36 @@ +from threading import Thread +from random import randint +import time +import os + +class balapan (Thread): + def __init__(self, rider, posisi): + Thread.__init__(self) + self.rider = rider + self.posisi = posisi + + def run(self): + print(self.rider,"di posisi",self.posisi) + +def main(): + print("Hasil Balapan") + + t1 = balapan("Rossi",randint(1,10)) + t2 = balapan("Marques",randint(1,10)) + t3 = balapan("Lorenzo",randint(1,10)) + + t1.start() + t2.start() + t3.start() + + t1.join() + t2.join() + t3.join() + + +if __name__ == "__main__": + main() + + + +