Tôi đang cố gắng viết một lớp python sử dụng xử lý song song/luồng để đọc hai cổng nối tiếp (/ dev/ttyS1 và/dev/ttyS2). Cả hai cổng này đang chạy ở tốc độ truyền 19200 và liên tục hoạt động. Tôi đã sử dụng pySerial cho mục đích này.Python nhiều luồng/nhiều quy trình để đọc các cổng nối tiếp
Cả hai thao tác đọc cần phải chạy liên tục và đồng thời. Tôi tự hỏi nếu nên sử dụng thư viện thread hoặc thư viện luồng hoặc thư viện đa xử lý. Tôi chỉ lo lắng vì khóa thông dịch toàn cục mà không cung cấp khả năng phân luồng thực sự cho các hoạt động IO nặng. Nhưng nếu khóa thông dịch toàn cục không ảnh hưởng đến tôi thì tôi sẽ sử dụng mô-đun luồng/luồng. Tuy nhiên nếu nó sau đó tôi sẽ cần phải vượt qua biên dịch các thư viện đa xử lý python bởi vì đây là trên một hệ thống nhúng.
Vì vậy, mã của tôi thường sẽ có luồng1 hoặc process1 = đọc ttyS1 và ghi vào bộ đệm sau khi thực hiện một số thao tác chuỗi trên dòng đọc. thread2 hoặc process2 = đọc ttyS2 và ghi vào bộ đệm khác sau khi thực hiện một số thao tác chuỗi trên dòng đọc. Các chức năng khác vv Các bộ đệm này được sử dụng thêm bởi các phần khác trong mã.
Ngoài ra việc xử lý đa trong python yêu cầu nhiều lõi/cpus?
Cảm ơn bạn đã đọc!
Cảm ơn thông tin về GIL đang được phát hành. Hệ thống nhúng sử dụng sẽ được sử dụng trên CPU 550 MHz với kiến trúc arm5tel. Tôi đoán bệnh chỉ cần làm một số điểm chuẩn với up thiết lập khác nhau và xem có bao nhiêu tôi có thể nhận ra nó. Ngoài ra cảm ơn cho video bị bệnh hãy nhìn vào nó! – kal