Parallel Processing

 avatar
unknown
python
a year ago
962 B
20
Indexable
import multiprocessing
import random
import time

def process_C(semaphore):
    try:
        sleep_time = random.random() * 6
        print("Process C sleeping for {:.2f} seconds".format(sleep_time))
        if sleep_time > 4.2:
            raise Exception("Random exception")
        time.sleep(sleep_time)
        print("Process C completed")
        semaphore.release()
    except Exception as e:
        print("Process C failed: {}".format(e))
        semaphore.release()


def process_B(semaphore):
        p = multiprocessing.Process(target=process_C, args=(semaphore,))
        semaphore.acquire()
        p.start()
        p.join(timeout=0)  # Set timeout to 0 to prevent blocking            
        print("Process B completed")
        
def process_A(semaphore):
        process_B(semaphore)    
        print("Process A completed")

if __name__ == "__main__":
    semaphore = multiprocessing.Semaphore(20)
    while True:
        process_A(semaphore)
Editor is loading...
Leave a Comment