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
26 changes: 26 additions & 0 deletions QUIS SISTER 1/fannydevitainggarini/Barrier.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
from random import randrange
from threading import Barrier, Thread
from time import ctime, sleep

student = 5
finish_line = Barrier(student)
students = ['fanny', 'devita', 'inggarini']

def siswa():
name = students.pop() #untuk menghasilkan data satu persatu
sleep(randrange(2, 5))
print('%s submit at: %s \n' % (name, ctime()))
finish_line.wait()

def main():
threads = []
print('Mulai kuis')
for i in range(student):
threads.append(Thread(target=siswa))
threads[-1].start()
for thread in threads:
thread.join()
print('Batas Akhir pengerjaan kuis!')

if _name_ == "_main_":
main()
70 changes: 70 additions & 0 deletions QUIS SISTER 1/fannydevitainggarini/Condition.py
Original file line number Diff line number Diff line change
@@ -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 Pasien(threading.Thread):
def _init_(self, *args, **kwargs):
super()._init_(*args, **kwargs)

def daftar(self):

with condition:

if len(items) == 5:
logging.info('no antri')
condition.wait()

items.pop()
logging.info('no antri {}'.format(len(items)))

condition.notify()

def run(self):
for i in range(5):
time.sleep(2)
self.antri()


class Dokter(threading.Thread):
def _init_(self, *args, **kwargs):
super()._init_(*args, **kwargs)

def pendaftaran(self):

with condition:

if len(items) == 13:
logging.info('pendaftaran {}. Stopped'.format(len(items)))
condition.wait()

items.append(1)
logging.info('waktu pendaftaran {}'.format(len(items)))

condition.notify()

def run(self):
for i in range(10):
time.sleep(0.7)
self.pendaftaran()


def main():
antri = mahasiswa(name='mahasiswa')
pendaftaran = krs(name='krs')

antri.start()
pendaftaran.start()

antri.join()
pendaftaran.join()


if _name_ == "_main_":
main()
38 changes: 38 additions & 0 deletions QUIS SISTER 1/fannydevitainggarini/Event.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import threading
import time
import logging

logging.basicConfig(level=logging.DEBUG,
format='(%(threadName)-9s) %(message)s',)

def kendaraan(e):
logging.debug('sebentar')
event_is_set = e.wait()
logging.debug('roda berapa?: %s', event_is_set)

def pergi(e, t):
while not e.isSet():
logging.debug('warna apa kendaraannya?')
event_is_set = e.wait(t)
logging.debug('warna merah: %s', event_is_set)
if event_is_set:
logging.debug('terimakasih informasinya')
else:
logging.debug('mobilnya bagus juga?')

if _name_ == "_main_":
e = threading.Event()
t1 = threading.Thread(name='wahyu',
target=kendaraan,
args=(e,))
t1.start()

t2 = threading.Thread(name='fay',
target=pergi,
args=(e, 2))
t2.start()

logging.debug('Waiting before calling Event.set()')
time.sleep(3)
e.set()
logging.debug('keren juga ya')
49 changes: 49 additions & 0 deletions QUIS SISTER 1/fannydevitainggarini/MyThreadClass.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import threading
import time
import os
from threading import Thread
from random import randint

# Lock Definition
threadLock = threading.Lock()

class Mysiswa (Thread):
def _init_(self, name, duration):
Thread._init_(self)
self.name = name
self.duration = duration
def run(self):
print ("---> " + self.name + \
" siswa diberikan no absen "\
+ str(os.getpid()) + "\n")
time.sleep(self.duration)
print ("---> " + self.name + " over\n")


def main():
start_time = time.time()

# Thread Creation
thread1 = Mysiswa("no absen siswa ", randint(1,10))
thread2 = Mysiswa("no absen siswa", randint(1,10))


# Thread Running
thread1.start()
thread2.start()


# Thread joining
thread1.join()
thread2.join()


# End
print("selesai")

#Execution Time
print("--- %s seconds ---" % (time.time() - start_time))


if _name_ == "_main_":
main()
73 changes: 73 additions & 0 deletions QUIS SISTER 1/fannydevitainggarini/MyThreadClass_lock.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
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, belonging to process ID "\
+ str(os.getpid()) + "\n")
time.sleep(self.duration)
print ("---> " + self.name + " over\n")
#Release the Lock
threadLock.release()


def main():
start_time = time.time()
# Thread Creation
thread1 = MyThreadClass("Thread#1 ", randint(1,9))
thread2 = MyThreadClass("Thread#2 ", randint(1,9))
thread3 = MyThreadClass("Thread#3 ", randint(1,9))
thread4 = MyThreadClass("Thread#4 ", randint(1,9))
thread5 = MyThreadClass("Thread#5 ", randint(1,9))
thread6 = MyThreadClass("Thread#6 ", randint(1,9))
thread7 = MyThreadClass("Thread#7 ", randint(1,9))
thread8 = MyThreadClass("Thread#8 ", randint(1,9))

# Thread Running
thread1.start()
thread2.start()
thread3.start()
thread4.start()
thread5.start()
thread6.start()
thread7.start()
thread8.start()


# Thread joining
thread1.join()
thread2.join()
thread3.join()
thread4.join()
thread5.join()
thread6.join()
thread7.join()
thread8.join()


# End
print("End")

#Execution Time
print("--- %s seconds ---" % (time.time() - start_time))


if __name__ == "__main__":
main()




54 changes: 54 additions & 0 deletions QUIS SISTER 1/fannydevitainggarini/MyThreadClass_lock_2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
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 kuis, NPM "\
+ str(os.getpid()) + "\n")
time.sleep(self.duration)
print ("---> " + self.name + " melakukan kuis\n")


def main():
start_time = time.time()

# Thread Creation
wahyu1 = MyThreadClass("wahyu ", randint(6,10))
ayna2 = MyThreadClass("ayna ", randint(6,10))
farhan3 = MyThreadClass("farhan ", randint(6,10))
sinta4 = MyThreadClass("Jimin ", randint(6,10))
via5 = MyThreadClass("sinta ", randint(6,10))
ririn6 = MyThreadClass("ririn ", randint(6,10))

# Thread Running
wahyu1.start()
ayna2.start()
farhan3.start()
sinta4.start()
via5.start()
ririn6.start()

# Thread joining
wahyu1.join()
ayna2.join()
farhan3.join()
sinta4.join()
via5.join()
ririn6.join()

# End
print("End")

#Execution Time
print("--- waktu pengerjaan kuis %s seconds ---" % (time.time() - start_time))


if _name_ == "_main_":
main()
25 changes: 25 additions & 0 deletions QUIS SISTER 1/fannydevitainggarini/Rlock.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# importing the module
import threading
from time import ctime

# initializing the shared resource, isialisasi sumber daya
fanny = 0

# creating an RLock object instead, membuat objek RLock sebagsi pengganti lock objek
# of Lock object
lock = threading.RLock()

# the below thread is trying to access, untuk mengakses
# the shared resource
lock.acquire() # metode mengunci data hingga terblokir
fanny = fanny + 4

# the below thread is trying to access
# the shared resource
lock.acquire()
fanny = fanny + 2
lock.release() # melepaskan kunci
lock.release()

# displaying the value of shared resource, menampilkan nilai sumber daya
print('No %s menyelesaikan ujian dengan waktu %s' % (fanny, ctime()))
33 changes: 33 additions & 0 deletions QUIS SISTER 1/fannydevitainggarini/Semaphore.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# importing the modules
from threading import *
import time

# creating thread instance where count = 3
obj = Semaphore(3)

# creating instance
def display(name):

# calling acquire method, memanggil metode pemanggil data
obj.acquire()
for i in range(5):
print('Fanny, ', end = '')
time.sleep(1)
print(name)

# calling release method, memanggil metode rilis
obj.release()

# creating multiple thread/utas
t1 = Thread(target = display , args = ('Thread-1',))
t2 = Thread(target = display , args = ('Thread-2',))
t3 = Thread(target = display , args = ('Thread-3',))
t4 = Thread(target = display , args = ('Thread-4',))
t5 = Thread(target = display , args = ('Thread-5',))

# calling the threads
t1.start()
t2.start()
t3.start()
t4.start()
t5.start()
17 changes: 17 additions & 0 deletions QUIS SISTER 1/fannydevitainggarini/Thread_definition.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import threading


def my_func(thread_number):
return print('Mahasiswa TEKNIK {}'.format(thread_number))


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()
Loading