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/Anisa Rosalina/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

num_runners = 3
finish_line = Barrier(num_runners)
runners = ['Razqya', 'Dimana', 'Alamatmu']

def runner():
name = runners.pop()
sleep(randrange(2, 5))
print('%s reached the barrier at: %s \n' % (name, ctime()))
finish_line.wait()

def main():
threads = []
print('Ayo kita pergi belanja!!!!')
for i in range(num_runners):
threads.append(Thread(target=runner))
threads[-1].start()
for thread in threads:
thread.join()
print('Lest Go!')

if __name__ == "__main__":
main()
70 changes: 70 additions & 0 deletions QUIS SISTER 1/Anisa Rosalina/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 Consumer(threading.Thread):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

def consume(self):

with condition:

if len(items) == 0:
logging.info('no items to chocolate')
condition.wait()

items.pop()
logging.info('chocolate 1 item')

condition.notify()

def run(self):
for i in range(20):
time.sleep(2)
self.consume()


class Producer(threading.Thread):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

def produce(self):

with condition:

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

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

condition.notify()

def run(self):
for i in range(20):
time.sleep(0.5)
self.produce()


def main():
producer = Producer(name='Pabrik chocolate')
consumer = Consumer(name='chocolate')

producer.start()
consumer.start()

producer.join()
consumer.join()


if __name__ == "__main__":
main()
44 changes: 44 additions & 0 deletions QUIS SISTER 1/Anisa Rosalina/MyThreadClass.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# -*- coding: utf-8 -*-
"""
Created on Wed Apr 20 17:38:34 2022

@author: Acer
"""

import time
import os
from random import randint
from threading import Thread

class Giveaway (Thread):
def __init__(self, name, duration):
Thread.__init__(self)
self.name = name
self.duration = duration
def run(self):
print ("---> Pemenangnya adalah " + self.name + "\n")
time.sleep(self.duration)
print ("---> Selamat Kepada " + self.name)


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

# Thread Creation
thread1 = Giveaway("Rezkia ", randint(1,10))
thread2 = Giveaway("Caca", randint(1,10))


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


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



if __name__ == "__main__":
main()
55 changes: 55 additions & 0 deletions QUIS SISTER 1/Anisa Rosalina/MyThreadClass_lock.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# -*- coding: utf-8 -*-
"""
Created on Wed Apr 20 17:37:46 2022

@author: Acer
"""

import threading
import time
import os
from threading import Thread
from random import randint

# Lock Definition
threadLock = threading.Lock()

class Giveaway (Thread):
def __init__(self, name, duration):
Thread.__init__(self)
self.name = name
self.duration = duration
def run(self):
#Acquire the Lock
threadLock.acquire()
print ("---> Pemenangnya adalah " + self.name + "\n")
threadLock.release()
time.sleep(self.duration)
print ("---> Selamat Kepada " + self.name)
#Release the Lock


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

# Thread Creation
thread1 = Giveaway("Rezkia ", randint(1,10))
thread2 = Giveaway("Caca", randint(1,10))



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



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




if __name__ == "__main__":
main()
51 changes: 51 additions & 0 deletions QUIS SISTER 1/Anisa Rosalina/MyThreadClass_lock_2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# -*- coding: utf-8 -*-
"""
Created on Wed Apr 20 17:39:08 2022

@author: Acer
"""

import threading
import time
import os
from threading import Thread
from random import randint

# Lock Definition
threadLock = threading.Lock()

class Mahasiswa (Thread):
def __init__(self, name, duration):
Thread.__init__(self)
self.name = name
self.duration = duration
def run(self):
threadLock.acquire()
print ("---> Pemenangnya adalah " + self.name + "\n")
threadLock.release()
time.sleep(self.duration)
print ("---> Selamat Kepada " + self.name)


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

# Thread Creation
thread1 = Mahasiswa("Rezkia", randint(1,10))
thread2 = Mahasiswa("caca", randint(1,10))


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


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




if __name__ == "__main__":
main()
67 changes: 67 additions & 0 deletions QUIS SISTER 1/Anisa Rosalina/Rlock.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# -*- coding: utf-8 -*-
"""
Created on Wed Apr 20 16:46:39 2022

@author: Acer
"""

import threading
import time
import random


class BoxChocolate:
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(boxchocolate, items):
print("Banyaknya chocolate {} yang ditambahkan \n".format(items))
while items:
boxchocolate.add()
time.sleep(1)
items -= 1
print("stok buah chocolate saat ini -->{} buah \n".format(items))



def remover(boxchocolate, items):
print("banyaknya chocolate {} yang di jual \n".format(items))
while items:
boxchocolate.remove()
time.sleep(1)
items -= 1
print("chocolate yang dijual -->{} buah \n".format(items))


def main():
items = 12
box = BoxChocolate()

t1 = threading.Thread(target=adder, \
args=(box, random.randint(1,10)))
t2 = threading.Thread(target=remover, \
args=(box, random.randint(1,10)))

t1.start()
t2.start()


t1.join()
t2.join()


if __name__ == "__main__":
main()
48 changes: 48 additions & 0 deletions QUIS SISTER 1/Anisa Rosalina/Semaphore.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# -*- coding: utf-8 -*-
"""
Created on Wed Apr 20 16:43:39 2022

@author: Acer
"""

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 pemenangundian():
logging.info('giveaway dari myrubylicious akan segera dimulai, pemenang akan diumumkan 3 hari lagi')
semaphore.acquire()
logging.info('pemenang undian giveaway dengan nomor {} harap dapat ke store offline myrubylicious di jalan setiabudhi'.format(item))


def nomorundian():
global item
time.sleep(3)
item = random.randint(1, 10)
logging.info('nomor {} adalah pemenang undian giveaway'.format(item))
semaphore.release()


def main():
for i in range(1):
t1 = threading.Thread(target=pemenangundian)
t2 = threading.Thread(target=nomorundian)

t1.start()
t2.start()

t1.join()
t2.join()


if __name__ == "__main__":
main()
25 changes: 25 additions & 0 deletions QUIS SISTER 1/Anisa Rosalina/Thread_definition.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
"""
Created on Wed Apr 20 16:20:41 2022

@author: Acer
"""

import threading


def Chocolate(thread_number):
return print('Jumlah Chocolate yang tersedia ditoko{} pcs'.format(thread_number))


def main():
threads = []
for i in range(10):
t = threading.Thread(target=Chocolate, args=(i,))
threads.append(t)
t.start()
t.join()


if __name__ == "__main__":
main()
Loading