Tôi đang cố gắng sử dụng node-unfluff
, trích xuất nội dung từ chuỗi HTML. Tuy nhiên, nó thường mất ~ 200ms để chạy. Kể từ khi nó chạy đồng bộ, đây là cách quá chậm. Tôi muốn làm cho nó chạy không đồng bộ.Công nhân Web và child_process cho các chức năng chuyên sâu của CPU trong Node.js
Theo như tôi biết, các tùy chọn của tôi là Công nhân Web (https://github.com/audreyt/node-webworker-threads) hoặc child_process
(https://nodejs.org/api/child_process.html). Có lựa chọn nào khác tốt hơn không?
Nếu không, điều nào trong số này tốt hơn về mặt tốc độ hoặc các yếu tố khác?
Edit:
Ngoài ra còn có Chủ đề à gogo (https://github.com/xk/node-threads-a-gogo) và nhỏ xíu nghiệp (https://github.com/avoidwork/tiny-worker).
Chủ đề WebWorker không hỗ trợ require
, do đó, đó không còn là tùy chọn.
Có thể gửi require
tệp bằng cách sử dụng Threads à gogo bằng cách sử dụng chức năng load
, nhưng có vẻ như cách giải quyết khác.
công nhân nhỏ chỉ có 26 sao trên Github vào lúc này, vì vậy tôi do dự khi sử dụng nó trong mã sản xuất. Nó hỗ trợ require
.
Tôi đang cân nhắc việc viết triển khai WebWorker của riêng mình bằng cách sử dụng child_process
nếu không có tùy chọn nào tốt hơn.
Bạn có thể giải thích trường hợp sử dụng của mình thêm một chút không? Bạn đang cố gắng để có được song song trong việc xử lý nhiều URL hoặc bạn đang cố gắng bằng cách nào đó tăng hiệu suất trong nút-unfluff? Bạn đã hình dung ra thế nào khi sử dụng các tiến trình con khi bạn đang phụ thuộc vào một thư viện trong Node? Tại sao cụm nút tiêu chuẩn không phải là một tùy chọn trong danh sách của bạn (lưu ý rằng nó thực sự dựa vào các tiến trình con)? – SylonZero
Tôi đang sử dụng Node làm máy chủ. Nếu một hàm chạy 200ms thì không người dùng nào có thể nhận được phản hồi của máy chủ trong 200ms. Tôi muốn làm cho nó không đồng bộ nên máy chủ không bị chặn. Tôi có thể sử dụng 'child_process' để bắt đầu một quá trình Node khác. Tôi chưa bao giờ sử dụng Node clustering trước đây, nhưng sự hiểu biết của tôi là nó tạo ra một máy chủ cho mỗi lõi. Nếu 'node-unfluff' đang chạy trên mỗi lõi, thì mọi máy chủ bị chặn. –
Ok, câu hỏi của bạn đang bắt đầu trở nên rõ ràng hơn. Tuy nhiên, ngay cả khi một thể hiện của một hàm (sử dụng nút-unfluff) là đồng bộ, điều đó không ngăn các trường hợp khác cho các yêu cầu khác tới Node khỏi bị sa thải. Vì vậy, một người dùng có thể phải chờ 200ms nhưng điều đó thường không có nghĩa là các yêu cầu cho * người dùng * khác không thể khởi động được.Bạn đã thử nghiệm và thấy rằng sử dụng mô-đun này không thực sự chặn các yêu cầu đồng thời không? – SylonZero