Đồng tiền trong Python

Đồng thời thường bị hiểu nhầm là song song. Đồng thời ngụ ý lập lịch trình mã độc lập được thực thi một cách có hệ thống. Chương này tập trung vào việc thực thi đồng thời cho một hệ điều hành sử dụng Python.

Chương trình sau đây giúp thực thi đồng thời cho một hệ điều hành:

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)

Đầu ra

Chương trình trên tạo ra kết quả sau:

Giải trình

"Multiprocessing" là một gói tương tự như mô-đun phân luồng. Gói này hỗ trợ đồng thời cục bộ và từ xa. Do mô-đun này, các lập trình viên có được lợi thế để sử dụng nhiều quy trình trên hệ thống nhất định.