Trong khi phát triển một ứng dụng Django được triển khai trên Apache mod_wsgi tôi thấy rằng trong trường hợp đa luồng (chủ đề Python; mod_wsgi processes = 1 threads = 8) Python sẽ không sử dụng tất cả các bộ xử lý có sẵn. Với phương pháp tiếp cận đa xử lý (mod_wsgi processes = 8 threads = 1) tất cả đều tốt và tôi có thể tải toàn bộ máy của mình.Liệu Python có sử dụng tất cả các bộ xử lý trong chế độ luồng không?
Vì vậy, câu hỏi: hành vi Python này có bình thường không? Tôi nghi ngờ nó bởi vì sử dụng 1 quá trình với vài chủ đề là cách tiếp cận mod_wsgi mặc định. hệ thống
là:
2xIntel Xeon 5xxx series (8 lõi (16 với hyperthreading)) trên FreeBSD 7.2 AMD64 và Python 2.6.4
Cảm ơn tất cả các câu trả lời. Chúng ta đều thấy rằng hành vi này là bình thường vì GIL. Đây là một lời giải thích tốt: http://jessenoller.com/2009/02/01/python-threads-and-the-global-interpreter-lock/ hoặc stackoverflow GIL thảo luận: .
tại sao câu hỏi này có ba lần bỏ phiếu? một tìm kiếm google đơn giản sẽ có đủ. – aaronasterling
@aaronasterling: Chúng tôi muốn tạo stackoverflow một cơ sở dữ liệu kiến thức lớn với các câu hỏi đơn giản và câu trả lời đơn giản. Chắc chắn thông tin này có sẵn nếu bạn STFG – HardQuestions