[Ini adalah posting pertama saya dan saya harap saya belum sepenuhnya salah memahami penggunaan SE - jika demikian saya minta maaf sebelumnya]
Saya setuju dengan "bgschaid" bahwa pertanyaannya sangat sulit dijawab berdasarkan informasi yang diberikan. Itu membuat perbedaan besar jika Anda ingin rutinitas tingkat rendah untuk mengeksploitasi arsitektur multi-inti atau jika Anda perlu mengeksploitasi paralelisme untuk masalah paralel yang memalukan - atau sesuatu di antaranya. Ikhtisar kemungkinan komputasi paralel yang berbeda dalam Python dapat ditemukan di sini .
Dalam kasus sebelumnya saya pasti merekomendasikan untuk menggunakan alat-alat seperti NumPy / SciPy yang setidaknya dalam versi yang dikompilasi MKL dari Enthought mendukung arsitektur multi-core. Di sini Anda dapat mengontrol jumlah inti yang akan digunakan melalui variabel lingkungan "MKL_NUM_THREADS". Hal ini bergantung pada pustaka yang sangat optimal yang hampir tidak dapat kita harapkan untuk mengalahkan kinerja secara bijaksana. Saya percaya pada umumnya disarankan untuk menggunakan perpustakaan yang berkualitas tinggi dan sangat optimal ini bila memungkinkan.
Jika Anda ingin mengeksploitasi paralelisme pada level kasar, multiprocessing alat standar Python mudah digunakan - dan juga mendukung objek data bersama. Ada beberapa alat yang berbeda untuk digunakan sebagai bagian dari paket multi - pemrosesan . Saya telah menggunakan map_async (suka SIMD) dan apply_async (suka MIMD) untuk beberapa masalah dengan hasil yang baik. The multiprocessing paket ini sangat mudah untuk digunakan dan menjadi bagian standar dari Python berarti bahwa Anda dapat mengharapkan pengguna potensial lainnya dari kode Anda untuk dengan mudah dapat menggunakannya. multiprocessing juga menghubungkan ke objek data NumPy secara langsung. Saat menggunakan multiprosesorSaya akan merekomendasikan Anda untuk mengatur variabel lingkungan "MKL_NUM_THREADS" menjadi 1 sehingga NumPy hanya diizinkan satu inti untuk setiap proses / pekerja - jika tidak, Anda dapat berakhir dalam pertentangan sumber daya antara NumPy paralel dan multiprosesor yang mengarah pada penurunan kinerja. multiprocessing berfungsi dengan baik untuk arsitektur multi-CPU / multi-core di bawah sistem operasi yang sama. Saya telah menggunakan multiprosesor pada komputer memori bersama dengan CPU 4 x Xeon E7-4850 (masing-masing 10 core) dan memori 512 GB dan itu bekerja dengan sangat baik. Array bersama dapat ditangani dengan multiprocessing . Array atau sharedctypes . Anda dapat menemukan dokumentasi Python di sini - periksafile library.pdf . Saya punya beberapa slide yang menjelaskan beberapa bagian dasar dari ini - PM saya jika Anda menginginkannya.
Jika Anda memiliki konfigurasi cluster dengan memori terdistribusi, saya yakin mpi4py kemungkinan merupakan alat yang disukai. Saya belum pernah menggunakan ini sendiri tetapi saya tahu bahwa itu banyak digunakan dalam pemrograman paralel Python.