diff --git a/QUIS SISTER 1/Deriska Fadilla M/Barrier.py b/QUIS SISTER 1/Deriska Fadilla M/Barrier.py new file mode 100644 index 0000000..7276bb1 --- /dev/null +++ b/QUIS SISTER 1/Deriska Fadilla M/Barrier.py @@ -0,0 +1,26 @@ +from random import randrange +from threading import Barrier, Thread +from time import ctime, sleep + +num_absensi = 3 +hasilakhir = Barrier(num_absensi) +nama = ['deriska', 'nur', 'ayu'] + +def mahasiswa(): + name = nama.pop() + sleep(randrange(1, 5)) + print('%s input absen pada: %s \n' % (name, ctime())) + hasilakhir.wait() + +def main(): + threads = [] + print('mulai berangkat!!') + for i in range(num_absensi): + threads.append(Thread(target=mahasiswa)) + threads[-1].start() + for thread in threads: + thread.join() + print('berhasil absen!') + +if __name__ == "__main__": + main() diff --git a/QUIS SISTER 1/Deriska Fadilla M/Condition.py b/QUIS SISTER 1/Deriska Fadilla M/Condition.py new file mode 100644 index 0000000..e4c4d66 --- /dev/null +++ b/QUIS SISTER 1/Deriska Fadilla M/Condition.py @@ -0,0 +1,70 @@ +import logging +import threading +import time + +LOG_FORMAT = '%(asctime)s %(threadName)-17s %(levelname)-8s %(message)s' +logging.basicConfig(level=logging.INFO, format=LOG_FORMAT) + +items = [] +condition = threading.Condition() + + +class Pembeli(threading.Thread): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + def beli(self): + + with condition: + + if len(items) > 6 and len(items) < 9: + logging.info('tidak ada yang bisa di beli') + condition.wait() + + items.pop() + logging.info('beli 1 mangga') + + condition.notify() + + def run(self): + for i in range(10): + time.sleep(2) + self.beli() + + +class Penjualsedang(threading.Thread): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + def membuat(self): + + with condition: + + if len(items) == 10: + logging.info('mangga diproses {}. berhenti'.format(len(items))) + condition.wait() + + items.append(1) + logging.info('total mangga {}'.format(len(items))) + + condition.notify() + + def run(self): + for i in range(15): + time.sleep(0.5) + self.membuat() + + +def main(): + penjualsedang = Penjualsedang(name='penjualsedang') + pembeli = Pembeli(name='pembeli') + + penjualsedang.start() + pembeli.start() + + penjualsedang.join() + pembeli.join() + + +if __name__ == "__main__": + main() diff --git a/QUIS SISTER 1/Deriska Fadilla M/Event.py b/QUIS SISTER 1/Deriska Fadilla M/Event.py new file mode 100644 index 0000000..9c241eb --- /dev/null +++ b/QUIS SISTER 1/Deriska Fadilla M/Event.py @@ -0,0 +1,47 @@ +import logging +import threading +import time +import random + +LOG_FORMAT = '%(asctime)s %(threadName)-17s %(levelname)-8s %(message)s' +logging.basicConfig(level=logging.INFO, format=LOG_FORMAT) + +items = [] +event = threading.Event() + + +class Consumer(threading.Thread): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + def run(self): + while True: + time.sleep(2) + event.wait() + item = items.pop() + logging.info('Consumer notify: {} popped by {}'\ + .format(item, self.name)) + +class Producer(threading.Thread): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + def run(self): + for i in range(5): + time.sleep(2) + item = random.randint(0, 10) + items.append(item) + logging.info('Producer notify: item {} appended by {}'\ + .format(item, self.name)) + event.set() + event.clear() + +if __name__ == "__main__": + t1 = Producer() + t2 = Consumer() + + t1.start() + t2.start() + + t1.join() + t2.join() diff --git a/QUIS SISTER 1/Deriska Fadilla M/MyThreadClass.py b/QUIS SISTER 1/Deriska Fadilla M/MyThreadClass.py new file mode 100644 index 0000000..8d7795e --- /dev/null +++ b/QUIS SISTER 1/Deriska Fadilla M/MyThreadClass.py @@ -0,0 +1,49 @@ +import time +import os +from random import randint +from threading import Thread + +class MyPasien (Thread): + def __init__(self, name, duration): + Thread.__init__(self) + self.name = name + self.duration = duration + def run(self): + print ("---> " + self.name + \ + " pasien diberikan no daftar "\ + + str(os.getpid()) + "\n") + time.sleep(self.duration) + print ("---> " + self.name + " over\n") + + +def main(): + start_time = time.time() + + # Thread Creation + thread1 = MyPasien("no daftar pasien ", randint(1,10)) + thread2 = MyPasien("no daftar pasien", randint(1,10)) + + + # Thread Running + thread1.start() + thread2.start() + + + # Thread joining + thread1.join() + thread2.join() + + + # End + print("End") + + #Execution Time + print("--- %s seconds ---" % (time.time() - start_time)) + + +if __name__ == "__main__": + main() + + + + diff --git a/QUIS SISTER 1/Deriska Fadilla M/MyThreadClass_lock.py b/QUIS SISTER 1/Deriska Fadilla M/MyThreadClass_lock.py new file mode 100644 index 0000000..da8ab13 --- /dev/null +++ b/QUIS SISTER 1/Deriska Fadilla M/MyThreadClass_lock.py @@ -0,0 +1,51 @@ +import threading +import time +import os +from threading import Thread +from random import randint + +# Lock Definition +threadLock = threading.Lock() + +class MyPasien (Thread): + def __init__(self, name, duration): + Thread.__init__(self) + self.name = name + self.duration = duration + def run(self): + print ("---> " + self.name + \ + " pasien diberikan no daftar "\ + + str(os.getpid()) + "\n") + time.sleep(self.duration) + print ("---> " + self.name + " penuh\n") + + +def main(): + start_time = time.time() + + # Thread Creation + thread1 = MyPasien("no daftar pasien ", randint(1,5)) + thread2 = MyPasien("no daftar pasien", randint(1,5)) + + + # Thread Running + thread1.start() + thread2.start() + + + # Thread joining + thread1.join() + thread2.join() + + + # End + print("End") + + #Execution Time + print("--- %s seconds ---" % (time.time() - start_time)) + + +if __name__ == "__main__": + main() + + \ No newline at end of file diff --git a/QUIS SISTER 1/Deriska Fadilla M/Rlock.py b/QUIS SISTER 1/Deriska Fadilla M/Rlock.py new file mode 100644 index 0000000..40b1844 --- /dev/null +++ b/QUIS SISTER 1/Deriska Fadilla M/Rlock.py @@ -0,0 +1,60 @@ +import threading +import time +import random + + +class BoxMangga: + def __init__(self): + self.lock = threading.RLock() + self.total_items = 0 + + def execute(self, value): + with self.lock: + self.total_items += value + + def add(self): + with self.lock: + self.execute(1) + + def remove(self): + with self.lock: + self.execute(-1) + +def adder(boxmangga, items): + print("Banyaknya mangga {} yang ditambahkan \n".format(items)) + while items: + boxmangga.add() + time.sleep(1) + items -= 1 + print("stok buah mangga saat ini -->{} buah \n".format(items)) + + + +def remover(boxmangga, items): + print("banyaknya mangga {} yang di jual \n".format(items)) + while items: + boxmangga.remove() + time.sleep(1) + items -= 1 + print("mangga yang dijual -->{} buah \n".format(items)) + + +def main(): + items = 12 + box = BoxMangga() + + t1 = threading.Thread(target=adder, \ + args=(box, random.randint(10,20))) + t2 = threading.Thread(target=remover, \ + args=(box, random.randint(1,10))) + + t1.start() + t2.start() + + + t1.join() + t2.join() + + +if __name__ == "__main__": + main() diff --git a/QUIS SISTER 1/Deriska Fadilla M/Semaphore.py b/QUIS SISTER 1/Deriska Fadilla M/Semaphore.py new file mode 100644 index 0000000..efe6998 --- /dev/null +++ b/QUIS SISTER 1/Deriska Fadilla M/Semaphore.py @@ -0,0 +1,41 @@ +import logging +import threading +import time +import random + +LOG_FORMAT = '%(asctime)s %(threadName)-17s %(levelname)-8s %(message)s' +logging.basicConfig(level=logging.INFO, format=LOG_FORMAT) + + +semaphore = threading.Semaphore(0) +jumlah = 0 + + +def pemenangarisan(): + logging.info('pengocokan arisan dimulai peserta harap menunggu') + semaphore.acquire() + logging.info('pemenang arisan dengan nomor {} harap dapat datang ke tempat'.format(jumlah)) + + +def nomorarisan(): + global jumlah + time.sleep(3) + jumlah = random.randint(1, 10) + logging.info('nomor {} adalah pemenang arisan'.format(jumlah)) + semaphore.release() + + +def main(): + for i in range(1): + t1 = threading.Thread(target=pemenangarisan) + t2 = threading.Thread(target=nomorarisan) + + t1.start() + t2.start() + + t1.join() + t2.join() + + +if __name__ == "__main__": + main() diff --git a/QUIS SISTER 1/Deriska Fadilla M/Thread_definition.py b/QUIS SISTER 1/Deriska Fadilla M/Thread_definition.py new file mode 100644 index 0000000..080c33a --- /dev/null +++ b/QUIS SISTER 1/Deriska Fadilla M/Thread_definition.py @@ -0,0 +1,17 @@ +import threading + + +def my_func(thread_number): + return print('ayank dimana? {}'.format(thread_number)) + + +def main(): + threads = [] + for i in range(7): + t = threading.Thread(target=my_func, args=(i,)) + threads.append(t) + t.start() + t.join() + +if __name__ == "__main__": + main() diff --git a/QUIS SISTER 1/Deriska Fadilla M/Thread_determine.py b/QUIS SISTER 1/Deriska Fadilla M/Thread_determine.py new file mode 100644 index 0000000..8796cdc --- /dev/null +++ b/QUIS SISTER 1/Deriska Fadilla M/Thread_determine.py @@ -0,0 +1,31 @@ +import threading +import time + +def senam_pagi(): + print (threading.currentThread().getName()+str('--> yoga \n')) + time.sleep(3) + print (threading.currentThread().getName()+str( '-->selesai yoga \n')) + return + +def senam_sore(): + print (threading.currentThread().getName()+str('--> lari sore \n')) + time.sleep(2) + print (threading.currentThread().getName()+str( '--> selesai \n')) + return + + + + +if __name__ == "__main__": + + t1 = threading.Thread(name='senam_pagi', target=senam_pagi) + t2 = threading.Thread(name='senam_sore', target=senam_sore) + + + t1.start() + t2.start() + + + t1.join() + t2.join() + diff --git a/QUIS SISTER 1/Deriska Fadilla M/Thread_name_and_processes.py b/QUIS SISTER 1/Deriska Fadilla M/Thread_name_and_processes.py new file mode 100644 index 0000000..6c47666 --- /dev/null +++ b/QUIS SISTER 1/Deriska Fadilla M/Thread_name_and_processes.py @@ -0,0 +1,43 @@ +from threading import Thread +import time +import os + +class MakananClass (Thread): + def __init__(self, name): + Thread.__init__(self) + self.name = name + + def run(self): + print("daftar menu {}".format(self.name)) #, " is {} \n".format(os.getpid())) + +def main(): + from random import randint + # Thread Creation + thread1 = MakananClass("Kwetiaw") + thread2 = MakananClass("Ikan Bakar/Goreng") + thread3 = MakananClass("Ayam Bakar/Goreng") + thread4 = MakananClass("Nasi Goreng") + + # Thread Running + thread4.start() + thread2.start() + thread3.start() + thread1.start() + + + # Thread joining + thread1.join() + thread2.join() + thread3.join() + thread4.join() + + # End + print("End") + + +if __name__ == "__main__": + main() + + + + diff --git a/QUIS SISTER 1/Deriska Fadilla M/Threading_with_queue.py b/QUIS SISTER 1/Deriska Fadilla M/Threading_with_queue.py new file mode 100644 index 0000000..665111c --- /dev/null +++ b/QUIS SISTER 1/Deriska Fadilla M/Threading_with_queue.py @@ -0,0 +1,55 @@ +def queue(): + s = [] + return s +def enqueue(s,i): + s.insert(0,i) + return s +def dequeue(s): + return s.pop() +def rear(s): + return (s[0]) +def front(s): + return (s[len(s)-1]) +def size(s): + return len(s) +def isEmpty(s): + return s==[] + +def No2(): + s = queue() + k='' + while True: + banyak = int(input('perhatikan permainan di game anda = ')) + for j in range(banyak): + orang = input('undang teman anda %i yang akan masuk dalam permaina = '%(j+1)) + enqueue(s,orang) + s.reverse() + print('maka teman anda masuk dalam permainan %s'%s) + s.reverse() + o = input('mencari id patner lawan anda = ') + ditemukan = 't' + itung = 0 + while ditemukan=='t': + if o == front(s): + print('SELAMATTTTTT! id lawan ditemukan') + ditemukan = 'y' + elif o != front(s): + masukan = dequeue(s) + enqueue(s,masukan) + ditemukan = 't' + s.reverse() + print('Looping %i = %s'%((itung+1),s)) + s.reverse() + itung+=1 + if itung > len(s): + print('sorry! lawannya cupu') + ditemukan = 'y' + print('Total peserta yang di perlukan',str(itung-5)) + k = input('apakah anda ingin melanjutkan permainannya? (y/n) ? ') + if k != 'y': + break + else: + print('markijut / mari kita lanjut') + +No2() + \ No newline at end of file diff --git a/QUIS SISTER 1/Naurah Nazifah/Event.py b/QUIS SISTER 1/Naurah Nazifah/Event.py new file mode 100644 index 0000000..d22288e --- /dev/null +++ b/QUIS SISTER 1/Naurah Nazifah/Event.py @@ -0,0 +1,38 @@ +import threading +import time +import logging + +logging.basicConfig(level=logging.DEBUG, + format='(%(threadName)-9s) %(message)s',) + +def jalan(e): + logging.debug('sebentar') + event_is_set = e.wait() + logging.debug('kamu ada dimana?: %s', event_is_set) + +def pergi(e, t): + while not e.isSet(): + logging.debug('ayo kita pergi, kemana yaa?') + event_is_set = e.wait(t) + logging.debug('ke bandung yok: %s', event_is_set) + if event_is_set: + logging.debug('terimakasih waktunya') + else: + logging.debug('mobilnya bagus juga?') + +if __name__ == "__main__": + e = threading.Event() + t1 = threading.Thread(name='bintang', + target=jalan, + args=(e,)) + t1.start() + + t2 = threading.Thread(name='bulan', + target=pergi, + args=(e, 2)) + t2.start() + + logging.debug('Waiting before calling Event.set()') + time.sleep(3) + e.set() + logging.debug('melelahkan juga ya') \ No newline at end of file diff --git a/QUIS SISTER 1/Naurah Nazifah/MythreadClass.py b/QUIS SISTER 1/Naurah Nazifah/MythreadClass.py new file mode 100644 index 0000000..efad835 --- /dev/null +++ b/QUIS SISTER 1/Naurah Nazifah/MythreadClass.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- +""" +Created on Wed Apr 20 13:53:13 2022 + +@author: Hp +""" + +import time +import os +from random import randint +from threading import Thread + +class MyThreadClass (Thread): + def _init_(self, name, duration): + Thread._init_(self) + self.name = name + self.duration = duration + def run(self): + print ("---> " + self.name + \ + " mulai presentasi, NPM "\ + + str(os.getpid()) + "\n") + time.sleep(self.duration) + print ("---> " + self.name + " melakukan presentasi\n") + + +def main(): + start_time = time.time() + + # Thread Creation + Audry1 = MyThreadClass("Audry ", randint(6,10)) + Artha2 = MyThreadClass("Artha ", randint(6,10)) + Lina3 = MyThreadClass("Lina ", randint(6,10)) + Jimin4 = MyThreadClass("Jimin ", randint(6,10)) + Wooyoung5 = MyThreadClass("Wooyoung ", randint(6,10)) + Haruto6 = MyThreadClass("Haruto ", randint(6,10)) + + # Thread Running + Audry1.start() + Artha2.start() + Lina3.start() + Jimin4.start() + Wooyoung5.start() + Haruto6.start() + + # Thread joining + Audry1.join() + Artha2.join() + Lina3.join() + Jimin4.join() + Wooyoung5.join() + Haruto6.join() + + # End + print("End") + + #Execution Time + print("--- waktu presentasi %s seconds ---" % (time.time() - start_time)) + + +if _name_ == "_main_": + main() \ No newline at end of file diff --git a/QUIS SISTER 1/Naurah Nazifah/MythreadClassLock.py b/QUIS SISTER 1/Naurah Nazifah/MythreadClassLock.py new file mode 100644 index 0000000..7dbc73f --- /dev/null +++ b/QUIS SISTER 1/Naurah Nazifah/MythreadClassLock.py @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- +""" +Created on Wed Apr 20 13:54:57 2022 + +@author: Hp +""" + +import threading +import time +import os +from threading import Thread +from random import randint + +# Lock Definition +threadLock = threading.Lock() + +class MyThreadClass (Thread): + def _init_(self, name, duration): + Thread._init_(self) + self.name = name + self.duration = duration + def run(self): + #Acquire the Lock + threadLock.acquire() + print ("---> " + self.name + \ + " Mulai Ujian, Nomor Ujian "\ + + str(os.getpid()) + "\n") + time.sleep(self.duration) + print ("---> " + self.name + " Selamat mengerjakan\n") + #Release the Lock + threadLock.release() + + +def main(): + start_time = time.time() + # Thread Creation + Audry1 = MyThreadClass("Audry ", randint(6,10)) + Artha2 = MyThreadClass("Artha ", randint(6,10)) + Lina3 = MyThreadClass("Lina ", randint(6,10)) + Jimin4 = MyThreadClass("Jimin ", randint(6,10)) + Wooyoung5 = MyThreadClass("Wooyoung ", randint(6,10)) + Haruto6 = MyThreadClass("Haruto ", randint(6,10)) + + # Thread Running + Audry1.start() + Artha2.start() + Lina3.start() + Jimin4.start() + Wooyoung5.start() + Haruto6.start() + + # Thread joining + Audry1.join() + Artha2.join() + Lina3.join() + Jimin4.join() + Wooyoung5.join() + Haruto6.join() + + + # End + print("Selesai Ujian") + + #Execution Time + print("--- waktu ujian %s seconds ---" % (time.time() - start_time)) + + +if _name_ == "_main_": + main() \ No newline at end of file diff --git a/QUIS SISTER 1/Naurah Nazifah/MythreadClass_lock_2.py b/QUIS SISTER 1/Naurah Nazifah/MythreadClass_lock_2.py new file mode 100644 index 0000000..6037b52 --- /dev/null +++ b/QUIS SISTER 1/Naurah Nazifah/MythreadClass_lock_2.py @@ -0,0 +1,63 @@ +import threading +import time +import os +from threading import Thread +from random import randint + +# Lock Definition +threadLock = threading.Lock() + +class MyThreadClass (Thread): + def _init_(self, name, duration): + Thread._init_(self) + self.name = name + self.duration = duration + def run(self): + #Acquire the Lock + threadLock.acquire() + print ("---> " + self.name + \ + " running games, ID games "\ + + str(os.getpid()) + "\n") + threadLock.release() + time.sleep(self.duration) + print ("---> " + self.name + " over\n") + #Release the Lock + + +def main(): + start_time = time.time() + + # Thread Creation + Audry1 = MyThreadClass("Audry ", randint(1,5)) + Artha2 = MyThreadClass("Artha ", randint(1,5)) + Lina3 = MyThreadClass("Lina ", randint(1,5)) + Jimin4 = MyThreadClass("Jimin ", randint(1,5)) + Wooyoung5 = MyThreadClass("Wooyoung ", randint(1,5)) + Haruto6 = MyThreadClass("Haruto ", randint(1,5)) + + + # Thread Running + Audry1.start() + Artha2.start() + Lina3.start() + Jimin4.start() + Wooyoung5.start() + Haruto6.start() + + # Thread joining + Audry1.join() + Artha2.join() + Lina3.join() + Jimin4.join() + Wooyoung5.join() + Haruto6.join() + + # End + print("End") + + #Execution Time + print("--- %s seconds ---" % (time.time() - start_time)) + + +if _name_ == "_main_": + main() \ No newline at end of file diff --git a/QUIS SISTER 1/Naurah Nazifah/Thread_determine.py b/QUIS SISTER 1/Naurah Nazifah/Thread_determine.py new file mode 100644 index 0000000..415123a --- /dev/null +++ b/QUIS SISTER 1/Naurah Nazifah/Thread_determine.py @@ -0,0 +1,31 @@ + import threading +import time + +def senam_pagi(): + print (threading.currentThread().getName()+str('--> yoga \n')) + time.sleep(3) + print (threading.currentThread().getName()+str( '-->selesai yoga \n')) + return + +def senam_sore(): + print (threading.currentThread().getName()+str('--> lari sore \n')) + time.sleep(2) + print (threading.currentThread().getName()+str( '--> selesai \n')) + return + + + + +if __name__ == "__main__": + + t1 = threading.Thread(name='senam_pagi', target=senam_pagi) + t2 = threading.Thread(name='senam_sore', target=senam_sore) + + + t1.start() + t2.start() + + + t1.join() + t2.join() + diff --git a/QUIS SISTER 1/Naurah Nazifah/Thread_name_and_processes.py b/QUIS SISTER 1/Naurah Nazifah/Thread_name_and_processes.py new file mode 100644 index 0000000..37f5e0b --- /dev/null +++ b/QUIS SISTER 1/Naurah Nazifah/Thread_name_and_processes.py @@ -0,0 +1,43 @@ +from threading import Thread +import time +import os + +class MakananClass (Thread): + def __init__(self, name): + Thread.__init__(self) + self.name = name + + def run(self): + print("makanan khas sumut {}".format(self.name)) #, " is {} \n".format(os.getpid())) + +def main(): + from random import randint + # Thread Creation + thread1 = MakananClass("Mie Gomak ") + thread2 = MakananClass("Sambal Tuktuk") + thread3 = MakananClass("Bika Ambon") + thread4 = MakananClass("Sumur Jengkol ") + + # Thread Running + thread4.start() + thread2.start() + thread3.start() + thread1.start() + + + # Thread joining + thread1.join() + thread2.join() + thread3.join() + thread4.join() + + # End + print("End") + + +if __name__ == "__main__": + main() + + + + diff --git a/QUIS SISTER 1/Naurah Nazifah/Threading_with_queue.py b/QUIS SISTER 1/Naurah Nazifah/Threading_with_queue.py new file mode 100644 index 0000000..665111c --- /dev/null +++ b/QUIS SISTER 1/Naurah Nazifah/Threading_with_queue.py @@ -0,0 +1,55 @@ +def queue(): + s = [] + return s +def enqueue(s,i): + s.insert(0,i) + return s +def dequeue(s): + return s.pop() +def rear(s): + return (s[0]) +def front(s): + return (s[len(s)-1]) +def size(s): + return len(s) +def isEmpty(s): + return s==[] + +def No2(): + s = queue() + k='' + while True: + banyak = int(input('perhatikan permainan di game anda = ')) + for j in range(banyak): + orang = input('undang teman anda %i yang akan masuk dalam permaina = '%(j+1)) + enqueue(s,orang) + s.reverse() + print('maka teman anda masuk dalam permainan %s'%s) + s.reverse() + o = input('mencari id patner lawan anda = ') + ditemukan = 't' + itung = 0 + while ditemukan=='t': + if o == front(s): + print('SELAMATTTTTT! id lawan ditemukan') + ditemukan = 'y' + elif o != front(s): + masukan = dequeue(s) + enqueue(s,masukan) + ditemukan = 't' + s.reverse() + print('Looping %i = %s'%((itung+1),s)) + s.reverse() + itung+=1 + if itung > len(s): + print('sorry! lawannya cupu') + ditemukan = 'y' + print('Total peserta yang di perlukan',str(itung-5)) + k = input('apakah anda ingin melanjutkan permainannya? (y/n) ? ') + if k != 'y': + break + else: + print('markijut / mari kita lanjut') + +No2() + \ No newline at end of file diff --git a/QUIS SISTER 1/Naurah Nazifah/barrier.py b/QUIS SISTER 1/Naurah Nazifah/barrier.py new file mode 100644 index 0000000..6da6227 --- /dev/null +++ b/QUIS SISTER 1/Naurah Nazifah/barrier.py @@ -0,0 +1,26 @@ +from random import randrange +from threading import Barrier, Thread +from time import ctime, sleep + +num_cerdascermat = 5 +hasilakhir = Barrier(num_cerdascermat) +peserta = ['nisa', 'rama', 'titin', 'budi', 'ani'] + +def siswa(): + name = peserta.pop() + sleep(randrange(2, 7)) + print('%s selesai mengerjakan pada: %s \n' % (name, ctime())) + hasilakhir.wait() + +def main(): + threads = [] + print('mulai mengerjakan!!') + for i in range(num_cerdascermat): + threads.append(Thread(target=siswa)) + threads[-1].start() + for thread in threads: + thread.join() + print('selesai!') + +if __name__ == "__main__": + main() diff --git a/QUIS SISTER 1/Naurah Nazifah/queue.py b/QUIS SISTER 1/Naurah Nazifah/queue.py new file mode 100644 index 0000000..5e05272 --- /dev/null +++ b/QUIS SISTER 1/Naurah Nazifah/queue.py @@ -0,0 +1,55 @@ +def queue(): + s = [] + return s +def enqueue(s,i): + s.insert(0,i) + return s +def dequeue(s): + return s.pop() +def rear(s): + return (s[0]) +def front(s): + return (s[len(s)-1]) +def size(s): + return len(s) +def isEmpty(s): + return s==[] + +def No2(): + s = queue() + k='' + while True: + banyak = int(input('Masukan banyak orang yang ingin ada di permainan = ')) + for j in range(banyak): + orang = input('Masukan nama orang ke %i yang masuk di antrian = '%(j+1)) + enqueue(s,orang) + s.reverse() + print('Orang yang berada di Antrian %s'%s) + s.reverse() + o = input('Masukan nama orang yang ingin ditemukan = ') + ditemukan = 't' + itung = 0 + while ditemukan=='t': + if o == front(s): + print('Congrast! Orang ditemukan') + ditemukan = 'y' + elif o != front(s): + masukan = dequeue(s) + enqueue(s,masukan) + ditemukan = 't' + s.reverse() + print('Looping %i = %s'%((itung+1),s)) + s.reverse() + itung+=1 + if itung > len(s): + print('Maaf! Orang yang dimaksud tidak ada') + ditemukan = 'y' + print('Total looping yang perlukan adalah',str(itung-1)) + k = input('ingin melanjutkan permainan (y/n) ? ') + if k != 'y': + break + else: + print('OKE LANJUT') + +No2() + \ No newline at end of file diff --git a/QUIS SISTER 1/Naurah Nazifah/rlock.py b/QUIS SISTER 1/Naurah Nazifah/rlock.py new file mode 100644 index 0000000..40b1844 --- /dev/null +++ b/QUIS SISTER 1/Naurah Nazifah/rlock.py @@ -0,0 +1,60 @@ +import threading +import time +import random + + +class BoxMangga: + def __init__(self): + self.lock = threading.RLock() + self.total_items = 0 + + def execute(self, value): + with self.lock: + self.total_items += value + + def add(self): + with self.lock: + self.execute(1) + + def remove(self): + with self.lock: + self.execute(-1) + +def adder(boxmangga, items): + print("Banyaknya mangga {} yang ditambahkan \n".format(items)) + while items: + boxmangga.add() + time.sleep(1) + items -= 1 + print("stok buah mangga saat ini -->{} buah \n".format(items)) + + + +def remover(boxmangga, items): + print("banyaknya mangga {} yang di jual \n".format(items)) + while items: + boxmangga.remove() + time.sleep(1) + items -= 1 + print("mangga yang dijual -->{} buah \n".format(items)) + + +def main(): + items = 12 + box = BoxMangga() + + t1 = threading.Thread(target=adder, \ + args=(box, random.randint(10,20))) + t2 = threading.Thread(target=remover, \ + args=(box, random.randint(1,10))) + + t1.start() + t2.start() + + + t1.join() + t2.join() + + +if __name__ == "__main__": + main() diff --git a/QUIS SISTER 1/Naurah Nazifah/semaphore.py b/QUIS SISTER 1/Naurah Nazifah/semaphore.py new file mode 100644 index 0000000..6528983 --- /dev/null +++ b/QUIS SISTER 1/Naurah Nazifah/semaphore.py @@ -0,0 +1,41 @@ +import logging +import threading +import time +import random + +LOG_FORMAT = '%(asctime)s %(threadName)-17s %(levelname)-8s %(message)s' +logging.basicConfig(level=logging.INFO, format=LOG_FORMAT) + + +semaphore = threading.Semaphore(0) +item = 0 + + +def pemenangarisan(): + logging.info('pengocokan arisan dimulai peserta harap menunggu') + semaphore.acquire() + logging.info('pemenang arisan dengan nomor {} harap dapat datang ke tempat'.format(item)) + + +def nomorarisan(): + global item + time.sleep(3) + item = random.randint(1, 10) + logging.info('nomor {} adalah pemenang arisan'.format(item)) + semaphore.release() + + +def main(): + for i in range(5): + t1 = threading.Thread(target=pemenangarisan) + t2 = threading.Thread(target=nomorarisan) + + t1.start() + t2.start() + + t1.join() + t2.join() + + +if __name__ == "__main__": + main() diff --git a/QUIS SISTER 1/Naurah Nazifah/thread_definition.py b/QUIS SISTER 1/Naurah Nazifah/thread_definition.py new file mode 100644 index 0000000..2e5b074 --- /dev/null +++ b/QUIS SISTER 1/Naurah Nazifah/thread_definition.py @@ -0,0 +1,18 @@ +import threading + + +def my_func(thread_number): + return print('panggil fungsi {}'.format(thread_number)) +# menampilkan informasi thread + + +def main(): + threads = [] + for i in range(5): + t = threading.Thread(target=my_func, args=(i,)) + threads.append(t) + t.start() + t.join() + +if _name_ == "_main_": + main() \ No newline at end of file