Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Barrier.py
Original file line number Diff line number Diff line change
@@ -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()
40 changes: 40 additions & 0 deletions QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Condition.py
Original file line number Diff line number Diff line change
@@ -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()
41 changes: 41 additions & 0 deletions QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/MyThreadClass.py
Original file line number Diff line number Diff line change
@@ -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()




Original file line number Diff line number Diff line change
@@ -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()




Original file line number Diff line number Diff line change
@@ -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()




57 changes: 57 additions & 0 deletions QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Rlock.py
Original file line number Diff line number Diff line change
@@ -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()
26 changes: 26 additions & 0 deletions QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Semaphore.py
Original file line number Diff line number Diff line change
@@ -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())
19 changes: 19 additions & 0 deletions QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Thread_definition.py
Original file line number Diff line number Diff line change
@@ -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()
29 changes: 29 additions & 0 deletions QUIS SISTER 1/Ira_Dwita_Syafitri_Quis_Sister1/Thread_determine.py
Original file line number Diff line number Diff line change
@@ -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()
Original file line number Diff line number Diff line change
@@ -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()