Python’da paralel işlemler yapmak, özellikle yoğun hesaplama gerektiren işlemler için oldukça önemlidir. multiprocessing
modülü, Python’da çok çekirdekli işlemcilerde paralel işlemler gerçekleştirmek için kullanılır.
Çoklu işlem, birden fazla işlem biriminin aynı anda çalışmasını sağlar ve bu, işlem sürelerini önemli ölçüde azaltabilir. Örneğin, aşağıdaki kod bir işlem havuzu (pool) kullanarak aynı anda birden fazla işlem yapmayı gösterir:
import multiprocessing
def square(n):
return n * n
if __name__ == "__main__":
numbers = [1, 2, 3, 4, 5]
with multiprocessing.Pool() as pool:
results = pool.map(square, numbers)
print(results)
Bu kod, bir dizi sayının karelerini paralel olarak hesaplar. Havuz kullanarak, işlemleri farklı çekirdeklerde eş zamanlı olarak gerçekleştirebilirsiniz.
Multiprocessing ayrıca iş süreçleri arasında veri paylaşımı için Queue
ve Pipe
gibi araçlar sunar:
from multiprocessing import Process, Queue
def producer(q):
q.put("Hello from producer")
def consumer(q):
print(q.get())
if __name__ == "__main__":
q = Queue()
p1 = Process(target=producer, args=(q,))
p2 = Process(target=consumer, args=(q,))
p1.start()
p2.start()
p1.join()
p2.join()
Sonuç olarak, multiprocessing
modülü, CPU yoğunluklu işlemler için mükemmel bir çözümdür. Ancak, GIL (Global Interpreter Lock) nedeniyle bazı sınırlamalar içeren threading
modülünden farklı olarak, her işlem kendi bellek alanına sahiptir.