Ada soalan: Jika ia adalah data dalam pangkalan data, mengapa tidak melaksanakan sql bukankah ini lebih cekap daripada berbilang proses? Jika anda perlu memilih salah satu daripada dua pilihan yang anda berikan, maka pertimbangkan ini:
Mula-mula simpan data asal dalam baris gilir (baris gilir), sebagai pengeluar dan kemudian ambil data daripada baris gilir, lakukan operasi, sebagai pengguna Pada masa ini, anda boleh membuka berbilang rangkaian pada pengguna (sudah tentu anda Jika kunci dikendalikan dengan baik, pengeluar juga boleh melakukan multi-threading)
while tmp_queue.empty() is not True:
x = tmp_queue.get()
x += 1
Dalam baris gilir, jika sentiasa ada elemen, benang akan terus beroperasi.
Anda boleh menulis terus dua fungsi membaca data dan data +1 ke dalam satu operasi, kemudian menggunakan berbilang proses untuk beroperasi, sama seperti kumpulan proses yang dinyatakan di atas. Tetapkan saiz kolam proses mengikut bilangan teras cpu anda. Memandangkan tiada perkongsian memori atau komunikasi langsung antara berbilang proses, anda boleh menggunakan berbilang proses dahulu untuk membaca semua data daripada pangkalan data, dan kemudian menggunakan berbilang proses untuk melaksanakan val+1
Ada soalan: Jika ia adalah data dalam pangkalan data, mengapa tidak melaksanakan sql bukankah ini lebih cekap daripada berbilang proses?
Jika anda perlu memilih salah satu daripada dua pilihan yang anda berikan, maka pertimbangkan ini:
Mula-mula simpan data asal dalam baris gilir (baris gilir), sebagai pengeluar
dan kemudian ambil data daripada baris gilir, lakukan operasi, sebagai pengguna
Pada masa ini, anda boleh membuka berbilang rangkaian pada pengguna (sudah tentu anda Jika kunci dikendalikan dengan baik, pengeluar juga boleh melakukan multi-threading)
Dalam baris gilir, jika sentiasa ada elemen, benang akan terus beroperasi.
Malah, cara terbaik untuk melaksanakan pelbagai pemprosesan dalam Python ialah menggunakan
multiprocessing
map
dalamContoh (Python 3):
Anda boleh menulis terus dua fungsi membaca data dan data +1 ke dalam satu operasi, kemudian menggunakan berbilang proses untuk beroperasi, sama seperti kumpulan proses yang dinyatakan di atas. Tetapkan saiz kolam proses mengikut bilangan teras cpu anda. Memandangkan tiada perkongsian memori atau komunikasi langsung antara berbilang proses, anda boleh menggunakan berbilang proses dahulu untuk membaca semua data daripada pangkalan data, dan kemudian menggunakan berbilang proses untuk melaksanakan val+1