Tôi đang thử asyncio và phải trộn nó với một số mã chặn đa luồng thông thường, vì vậy tôi cần phải giảm tải thực thi bằng run_in_exector.Là loop.run_in_executor thread-an toàn của asyncio?
asyncio docs warn that "most functions" aren't threadsafe và rằng call_soon_threadsafe
là chức năng chỉ an toàn chủ đề. Có một số khác, chẳng hạn như Future.add_done_callback
, cũng được ghi rõ ràng là luồng an toàn. Sau đó nó có một câu sau đó nói rằng "bạn có thể sử dụng run_in_executor để chạy callbacks trong các chủ đề khác", nhưng không bình luận về thread-an toàn của nó cụ thể.
run_in_executor không phải là tài liệu an toàn chỉ chuỗi, nhưng nhìn vào nguồn, có vẻ như đó là luồng an toàn nếu các đường dẫn mã đúng được thực hiện.
Có ai biết nếu đó là coi là chuỗi an toàn, nhưng không được ghi lại theo cách đó?
Bạn có ý nghĩa gì bởi "an toàn chỉ" trong ngữ cảnh này? Tài liệu sử dụng thuật ngữ đó để chỉ ra nếu nó an toàn để gọi một phương thức đã cho từ một luồng bên ngoài luồng đang chạy vòng lặp sự kiện 'asyncio'. Đó có lẽ không phải những gì bạn đang yêu cầu ở đây, mặc dù, là nó? – dano
Đó chính xác là những gì tôi muốn nói. Tôi có một số mã đa luồng hiện có và đang cố gắng sử dụng asyncio với nó, vì vậy tôi cần một cách an toàn thread để lên lịch mã chặn. –