ThreadPoolExecutor yêu cầu Python
API của chúng tôi được thiết kế để cho phép bạn có nhiều thao tác cạo đồng thời. Điều đó có nghĩa là bạn có thể tăng tốc độ quét hàng trăm, hàng nghìn hoặc thậm chí hàng triệu trang mỗi ngày, tùy thuộc vào kế hoạch của bạn Show Bạn càng có nhiều yêu cầu đồng thời giới hạn, bạn càng có nhiều cuộc gọi hoạt động song song và bạn có thể cạo càng nhanh Tiện ích bổ sung nhỏ cho thư viện http yêu cầu python. Sử dụng python 3. 2 đồng thời. tương lai hoặc backport cho các phiên bản trước của python API bổ sung và các thay đổi là tối thiểu và cố gắng tránh những bất ngờ Mã đồng bộ sau
Có thể được dịch để sử dụng tương lai và do đó không đồng bộ bằng cách tạo FuturesSession và bắt Tương lai được trả về thay cho Phản hồi. Phản hồi có thể được truy xuất bằng cách gọi phương thức kết quả trên Tương lai
Theo mặc định, ThreadPoolExecutor được tạo với 8 công nhân. Nếu bạn muốn điều chỉnh giá trị đó hoặc chia sẻ trình thực thi trong nhiều phiên, bạn có thể cung cấp một trình tạo cho hàm tạo FuturesSession
Là một lối tắt trong trường hợp chỉ tăng số công nhân, bạn có thể chuyển thẳng max_workers tới hàm tạo FuturesSession
FutureSession sẽ sử dụng một đối tượng phiên hiện có nếu được cung cấp
Đó là nó. api của yêu cầu. Phiên được giữ nguyên mà không có bất kỳ sửa đổi nào ngoài việc trả về Tương lai thay vì Phản hồi. Như với tất cả các ngoại lệ tương lai được chuyển (ném) sang tương lai. result() gọi vì vậy hãy thử/ngoại trừ các khối nên được chuyển đến đó Hủy các yêu cầu đã xếp hàng đợi (a. k. dọn dẹp sau khi chính mình)Nếu bạn biết rằng bạn sẽ không cần thêm bất kỳ phản hồi nào từ các hợp đồng tương lai chưa được giải quyết, bạn nên hủy các yêu cầu đó. Bạn có thể làm điều này bằng cách sử dụng phiên làm trình quản lý bối cảnh
Trong ví dụ này, yêu cầu thứ hai hoặc thứ ba sẽ bị bỏ qua, tiết kiệm thời gian và tài nguyên nếu không sẽ bị lãng phí Làm việc trong nềnQuá trình xử lý bổ sung có thể được thực hiện trong nền bằng cách sử dụng chức năng hook của yêu cầu. Điều này có thể hữu ích cho việc chuyển công việc ra khỏi nền trước, ví dụ đơn giản là phân tích cú pháp json
Móc cũng có thể được áp dụng cho phiên
Một ví dụ nâng cao hơn có thêm thuộc tính đã qua cho tất cả các yêu cầu ________số 8Sử dụng ProcessPoolExecutorTương tự như ThreadPoolExecutor, có thể sử dụng một phiên bản của ProcessPoolExecutor. Đúng như tên gọi, các yêu cầu sẽ được thực hiện đồng thời trong các quy trình riêng biệt thay vì các luồng
Yêu cầu cơ bản của việc sử dụng ProcessPoolExecutor là Phiên. yêu cầu, FutureSession đều có thể chọn được Điều này có nghĩa là chỉ Python 3. 5 được hỗ trợ đầy đủ, trong khi Python phiên bản 3. 4 trở lên YÊU CẦU một yêu cầu hiện có. Phiên bản phiên sẽ được thông qua khi khởi tạo FutureSession. Trăn 2. X và <3. 4 hiện không được hỗ trợ |