Tôi muốn gửi công việc từ một chủ đề đến một vòng lặp sự kiện asyncio
(giống như run_in_executor nhưng ngược lại).Gửi công việc đến vòng lặp sự kiện asyncio
Đây là những gì các tài liệu asyncio
nói về concurrency and multithreading:
Để lên lịch gọi lại từ một chủ đề khác nhau, phương pháp này BaseEventLoop.call_soon_threadsafe() nên được sử dụng. Ví dụ để sắp xếp một coroutine từ một thread khác nhau:
loop.call_soon_threadsafe(asyncio.async, coro_func())
đó làm việc tốt nhưng kết quả của coroutine bị mất. Thay vào đó, bạn có thể sử dụng chức năng thêm một cuộc gọi lại được thực hiện cho tương lai được trả về bởi async
(hoặc ensure_future
) để chủ đề có thể truy cập kết quả thông qua một concurrent.futures.Future.
Có lý do cụ thể nào khiến tính năng này không được triển khai trong thư viện chuẩn không? Hay tôi đã bỏ lỡ một cách đơn giản hơn để đạt được điều đó?
làm bạn muốn đặt này trong câu hỏi nên nó doesnt có vẻ như là một câu trả lời –
Vâng, đó là một loại câu trả lời cho câu hỏi của riêng tôi (http://stackoverflow.com/help/self-answer), vì có thể có cách tốt hơn để đạt được điều tương tự. – Vincent
nếu bạn nhìn thấy nó theo cách đó, ok :) –