Có thể tăng tốc một tác vụ bằng cách sử dụng đa xử lý/luồng không? Cảm giác ruột của tôi là câu trả lời là 'không'. Dưới đây là ví dụ về ý nghĩa của một "nhiệm vụ duy nhất":Tăng tốc một nhiệm vụ bằng cách sử dụng đa xử lý hoặc luồng
for i in range(max):
pick = random.choice(['on', 'off', 'both'])
Với đối số 10000000 mất khoảng 7,9 giây để hoàn thành trên hệ thống của tôi.
Tôi có nắm bắt cơ bản về cách sử dụng đa xử lý và luồng cho nhiều tác vụ. Ví dụ: nếu tôi có 10 thư mục, mỗi thư mục chứa X số tệp cần được đọc, tôi có thể sử dụng tạo 10 chuỗi.
Tôi nghi ngờ rằng tác vụ đơn lẻ chỉ sử dụng một quy trình (trình quản lý tác vụ báo cáo mức sử dụng CPU tối thiểu). Có cách nào để tận dụng các lõi khác của tôi trong những trường hợp như vậy không? Hoặc là tăng CPU/bộ nhớ tốc độ cách duy nhất để có được kết quả nhanh hơn?
đa xử lý có thể giúp, nhiều luồng trong một quá trình không nhiều (từ khóa: "khóa thông dịch toàn cục" hay còn gọi là "GIL") –
@Michael Butsher: Bạn có thể cung cấp ví dụ về cách tôi có thể chia nhỏ mã tôi đã đề cập bằng cách sử dụng đa xử lý hay không ? –
Bạn có thể đọc http://mikecvet.wordpress.com/2010/07/02/parallel-mapreduce-in-python/ để xem ví dụ –