tôi làm dự án học máy bằng Python, vì vậy tôi phải song song với dự đoán chức năng, mà tôi đang sử dụng trong chương trình của tôi.multiprocessing.dummy bằng Python không sử dụng 100% CPU
from multiprocessing.dummy import Pool
from multiprocessing import cpu_count
def multi_predict(X, predict, *args, **kwargs):
pool = Pool(cpu_count())
results = pool.map(predict, X)
pool.close()
pool.join()
return results
Vấn đề là tất cả CPU của tôi chỉ tải trên 20-40% (tổng cộng là 100%). Tôi sử dụng multiprocessing.dummy vì tôi có một số vấn đề với mô đun đa xử lý trong chức năng tẩy.
Hoặc sử dụng triển khai Python không dựa trên GIL như Jython hoặc IronPython ... hoặc nhập phiên bản GIL-less STM của PyPy từ năm 2015. :) – abarnert
[Chủ đề Python là chủ đề hệ điều hành thực: chúng có thể chạy song song (nếu có có nhiều lõi CPU). Chỉ có mã Python thuần túy bị giới hạn bởi GIL. Các phần mở rộng của C như 'lxml',' regex', 'numpy' có thể làm và giải phóng GIL và do đó một số luồng có thể chạy song song.] (Http://stackoverflow.com/questions/26234301/synchronise-muti-threads -in-python # comment41151656_26234761) – jfs
@jfs Vậy tại sao nó không hoạt động cho OP? – endolith