2009-09-11 38 views
9

Giả sử tôi có một kịch bản python gọi my_parallel_script.py đó liên quan đến việc sử dụng multiprocessing parallelize một vài điều và tôi chạy nó với lệnh sau đây:Làm cách nào để bạn có thể tạo một tập lệnh Python song song?

python -m cProfile my_parallel_script.py 

này tạo profiling đầu ra cho quá trình mẹ chỉ. Các cuộc gọi được thực hiện trong các tiến trình con không được ghi lại. Có thể cấu hình các tiến trình con không?

Nếu tùy chọn duy nhất là sửa đổi nguồn, thì cách đơn giản nhất để làm điều này là gì?

Trả lời

8

cProfile chỉ hoạt động trong một quy trình duy nhất, do đó bạn sẽ không tự động nhận được quá trình con được lược tả.

Tôi khuyên bạn nên tinh chỉnh mã quy trình con để bạn có thể gọi riêng nó dưới dạng một quy trình. Sau đó chạy nó dưới profiler. Bạn có thể không cần phải chạy hệ thống đa quy trình của bạn trong khi hồ sơ, và nó sẽ đơn giản hóa công việc để chỉ có một đứa trẻ đang chạy.

+3

Tôi đã thử điều này và rất tiếc là tôi ** cần phải chạy quá trình đa hệ thống trong khi định cấu hình. Nó dường như làm chậm đáng kể sau một thời gian, nhưng chỉ khi nó đang chạy với đa xử lý được kích hoạt. – Fragsworth

+3

Có khả năng đây là tranh chấp tài nguyên, và việc lược tả có thể không phải là cách để tìm ra nó. Trong mọi trường hợp, bạn có thể thử lược tả tất cả các tiến trình con cùng một lúc. Bạn có thể gọi hồ sơ theo lập trình trong mã Python con. –

Các vấn đề liên quan