การทำงานพร้อมกันใน Python
ภาวะพร้อมกันมักถูกเข้าใจผิดว่าเป็นความเท่าเทียมกัน ภาวะพร้อมกันหมายถึงการตั้งเวลาให้โค้ดที่เป็นอิสระดำเนินการอย่างเป็นระบบ บทนี้มุ่งเน้นไปที่การดำเนินการพร้อมกันสำหรับระบบปฏิบัติการโดยใช้ Python
โปรแกรมต่อไปนี้ช่วยในการดำเนินการพร้อมกันสำหรับระบบปฏิบัติการ -
import os
import time
import threading
import multiprocessing
NUM_WORKERS = 4
def only_sleep():
print("PID: %s, Process Name: %s, Thread Name: %s" % (
os.getpid(),
multiprocessing.current_process().name,
threading.current_thread().name)
)
time.sleep(1)
def crunch_numbers():
print("PID: %s, Process Name: %s, Thread Name: %s" % (
os.getpid(),
multiprocessing.current_process().name,
threading.current_thread().name)
)
x = 0
while x < 10000000:
x += 1
for _ in range(NUM_WORKERS):
only_sleep()
end_time = time.time()
print("Serial time=", end_time - start_time)
# Run tasks using threads
start_time = time.time()
threads = [threading.Thread(target=only_sleep) for _ in range(NUM_WORKERS)]
[thread.start() for thread in threads]
[thread.join() for thread in threads]
end_time = time.time()
print("Threads time=", end_time - start_time)
# Run tasks using processes
start_time = time.time()
processes = [multiprocessing.Process(target=only_sleep()) for _ in range(NUM_WORKERS)]
[process.start() for process in processes]
[process.join() for process in processes]
end_time = time.time()
print("Parallel time=", end_time - start_time)
เอาต์พุต
โปรแกรมข้างต้นสร้างผลลัพธ์ต่อไปนี้ -
คำอธิบาย
“ มัลติโพรเซสซิง” เป็นแพ็คเกจที่คล้ายกับโมดูลเธรด แพคเกจนี้รองรับการทำงานพร้อมกันภายในและระยะไกล เนื่องจากโมดูลนี้โปรแกรมเมอร์ได้รับประโยชน์ในการใช้กระบวนการหลายอย่างในระบบที่กำหนด