Tài liệu cho multiprocessing
mô-đun chỉ ra cách chuyển hàng đợi đến một quy trình được bắt đầu bằng multiprocessing.Process
. Nhưng làm cách nào để chia sẻ hàng đợi với các quy trình không đồng bộ của worker được bắt đầu apply_async
? Tôi không cần tham gia động hoặc bất cứ điều gì khác, chỉ là một cách để người lao động (lặp đi lặp lại) báo cáo kết quả của họ về cơ sở.
import multiprocessing
def worker(name, que):
que.put("%d is done" % name)
if __name__ == '__main__':
pool = multiprocessing.Pool(processes=3)
q = multiprocessing.Queue()
workers = pool.apply_async(worker, (33, q))
Đây không thành công với:
RuntimeError: Queue objects should only be shared between processes through inheritance
. Tôi hiểu điều này có nghĩa là gì và tôi hiểu lời khuyên nên kế thừa thay vì yêu cầu chọn / bỏ chọn (và tất cả các hạn chế đặc biệt của Windows). Nhưng làm cách nào để vượt qua hàng đợi một cách hiệu quả? Tôi không thể tìm thấy một ví dụ và tôi đã thử một số lựa chọn thay thế nhưng không thành công theo nhiều cách khác nhau. Giúp tôi với?