import multiprocessing
import multiprocessing
class MyProcess(multiprocessing.Process):
def __init__(self, name):
super().__init__()
self.name = name
def run(self):
print(f'Running process {self.name}')
def my_process(name):
print(f'Running process {name}')
if __name__ == '__main__':
p1 = MyProcess('Process 1')
p2 = multiprocessing.Process(target=my_process, args=('Process 2',))
p1.start()
p2.start()
import multiprocessing
def producer(queue):
for i in range(5):
queue.put(i)
print(f'Produced: {i}')
def consumer(queue):
while True:
data = queue.get()
if data is None:
break
print(f'Consumed: {data}')
if __name__ == '__main__':
queue = multiprocessing.Queue()
p1 = multiprocessing.Process(target=producer, args=(queue,))
p2 = multiprocessing.Process(target=consumer, args=(queue,))
p1.start()
p2.start()
p1.join()
p2.join()
import multiprocessing
def process_task(name):
print(f'Running task {name}')
if __name__ == '__main__':
pool = multiprocessing.Pool(processes=4)
tasks = ['Task 1', 'Task 2', 'Task 3', 'Task 4']
pool.close()
pool.join()
import multiprocessing
def increment_counter(counter, lock):
for _ in range(1000000):
with lock:
counter.value += 1
def decrement_counter(counter, lock, event):
while not event.is_set():
with lock:
counter.value -= 1
if __name__ == '__main__':
counter = multiprocessing.Value('i', 0)
lock = multiprocessing.Lock()
event = multiprocessing.Event()
p1 = multiprocessing.Process(target=increment_counter, args=(counter, lock))
p2 = multiprocessing.Process(target=decrement_counter, args=(counter, lock, event))
p1.start()
p2.start()
p1.join()
p2.join()
print(f'Counter value: {counter.value}')