[Đây là bài viết đầu tiên của tôi và tôi hy vọng tôi đã không hoàn toàn hiểu sai về việc sử dụng SE - nếu vậy tôi xin lỗi trước]
Tôi đồng ý với "bgschaid" rằng câu hỏi rất khó trả lời dựa trên thông tin được cung cấp. Nó tạo ra sự khác biệt lớn nếu bạn muốn các thói quen cấp thấp khai thác kiến trúc đa lõi hoặc nếu bạn cần khai thác song song cho các vấn đề song song lúng túng - hoặc một cái gì đó ở giữa. Tổng quan về các khả năng tính toán song song khác nhau trong Python có thể được tìm thấy ở đây .
Trong trường hợp trước, tôi chắc chắn khuyên bạn nên sử dụng các công cụ như NumPy / SciPy , ít nhất là trong phiên bản được biên dịch MKL từ Enth think hỗ trợ các kiến trúc đa lõi. Tại đây, bạn có thể kiểm soát số lượng lõi để sử dụng thông qua biến môi trường "MKL_NUM_THREADS". Điều này phụ thuộc vào các thư viện được tối ưu hóa cao mà chúng ta khó có thể mong đợi để đánh bại hiệu suất một cách khôn ngoan. Tôi tin rằng thường nên sử dụng các thư viện chất lượng cao và tối ưu hóa cao này bất cứ khi nào có thể.
Nếu bạn muốn khai thác song song ở mức độ thô, thì đa xử lý công cụ tiêu chuẩn Python rất dễ sử dụng - và nó cũng hỗ trợ các đối tượng dữ liệu được chia sẻ. Có các công cụ khác nhau để sử dụng như một phần của gói đa xử lý . Tôi đã sử dụng map_async (thích SIMD) và application_async (thích MIMD) cho một số vấn đề có kết quả tốt. Các đa xử gói là khá dễ dàng để sử dụng và trở thành một phần tiêu chuẩn của Python có nghĩa là bạn có thể mong đợi người dùng tiềm năng khác của mã của bạn để dễ dàng có thể sử dụng nó. đa xử lý cũng liên kết trực tiếp đến các đối tượng dữ liệu NumPy. Khi sử dụng đa xử lýTôi khuyên bạn nên đặt biến môi trường "MKL_NUM_THREADS" thành 1 sao cho NumPy chỉ được phép một lõi cho mỗi quy trình / công nhân - nếu không, bạn có thể kết thúc một cuộc tranh chấp tài nguyên giữa NumPy song song và đa xử lý dẫn đến suy giảm hiệu suất. đa xử lý hoạt động tốt cho kiến trúc đa CPU / đa lõi trong cùng một hệ điều hành. Tôi đã sử dụng đa xử lý trên máy tính dùng chung bộ nhớ với 4 x CPU Xeon E7-4850 (mỗi lõi 10) và bộ nhớ 512 GB và nó hoạt động rất tốt. Mảng chia sẻ có thể được xử lý bằng cách đa xử lý.Array hoặc sharedctypes . Bạn có thể tìm thấy tài liệu Python tại đây - kiểm trathư viện.pdf tập tin. Tôi có một số slide giải thích một số phần cơ bản của điều này - PM cho tôi nếu bạn muốn.
Nếu bạn có cấu hình cụm với bộ nhớ phân tán, tôi tin rằng mpi4py có thể là công cụ ưa thích. Tôi đã không sử dụng cái này cho mình nhưng tôi biết rằng nó đang được sử dụng rất nhiều trong lập trình song song Python.