Python cách tốt nhất để phân tích cú pháp JSON
Tất nhiên, bạn có thể kết hợp các giải pháp với nhiều thư viện. Hoặc, bạn có thể sử dụng Show
Một điểm khởi đầu. tích hợp sẵn import json with open("large.json", "r") as f: data = json.load(f) user_to_repos = {} for record in data: user = record["actor"]["login"] repo = record["repo"]["name"] if user not in user_to_repos: user_to_repos[user] = set() user_to_repos[user].add(repo) print(len(user_to_repos), "records") 0 và import json with open("large.json", "r") as f: data = json.load(f) user_to_repos = {} for record in data: user = record["actor"]["login"] repo = record["repo"]["name"] if user not in user_to_repos: user_to_repos[user] = set() user_to_repos[user].add(repo) print(len(user_to_repos), "records") 1Hãy bắt đầu bằng cách xem xét hai thư viện khác. mô-đun 0 tích hợp trong Python và thư viện 1 nhanh chóng. Chúng tôi sẽ xem lại ví dụ từ bài viết của tôi về phân tích cú pháp JSON trực tuyến. Cụ thể, chúng tôi sẽ phân tích một tệp ~25 MB mã hóa danh sách các đối tượng JSON (tôi. e. từ điển), trông giống như các sự kiện GitHub, người dùng thực hiện các thao tác với kho lưu trữ
Mục tiêu của chúng tôi là tìm ra kho lưu trữ nào mà một người dùng nhất định đã tương tác với Đây là cách bạn làm điều đó với mô-đun 0 tích hợp trong thư viện chuẩn Python
Và đây là cách bạn thực hiện với 1, thay đổi hai dòng
Đây là dung lượng bộ nhớ và thời gian mà hai tùy chọn này sử dụng
Mức sử dụng bộ nhớ cũng tương tự, nhưng 1 nhanh hơn, ở mức 280 mili giây thay vì 420 mili giâyTiếp theo, hãy xem xét msgspec. giải mã và mã hóa dựa trên lược đồ cho JSONĐây là mã tương ứng sử dụng
Mã này dài hơn và chi tiết hơn vì Khá hữu ích, bạn không cần phải có lược đồ cho tất cả các trường. Mặc dù bản ghi JSON có rất nhiều trường (hãy xem ví dụ trước đó để xem tất cả dữ liệu), chúng tôi chỉ cho Đây là kết quả của việc phân tích cú pháp với
Nhanh hơn nhiều và bộ nhớ ít hơn nhiều Để tóm tắt ba tùy chọn mà chúng tôi đã thấy, cũng như giải pháp dựa trên 0 phát trực tuyếnGóiThời gianRAMSử dụng bộ nhớ cố địnhSchemaStdlib 0420ms136MB❌❌ 1280ms114MB❌❌ 0300ms14MB✓❌msgspec 90ms39MB❌✓Giải pháp phát trực tuyến chỉ sử dụng một lượng bộ nhớ cố định để phân tích cú pháp; . Nhưng trong ba giải pháp đó, Ưu và nhược điểm của phân tích cú pháp dựa trên lược đồVì Chúng tôi cũng đã xác thực lược đồ miễn phí. Nếu một trong các bản ghi bằng cách nào đó bị thiếu một trường hoặc nếu giá trị là loại sai, chẳng hạn như một số nguyên thay vì một chuỗi, trình phân tích cú pháp sẽ phàn nàn. Với các thư viện JSON tiêu chuẩn, việc xác thực lược đồ phải diễn ra riêng biệt Mặt khác
Tìm hiểu thêm về msgspec
Bài viết tiếp theo. Ngoài cProfile. Chọn công cụ phù hợp để tối ưu hóa hiệu suất Xử lý dữ liệu quá chậm?Bạn có thể nhận được kết quả nhanh hơn từ quy trình khoa học dữ liệu của mình—và cũng nhận lại được một số tiền—nếu bạn có thể tìm ra lý do tại sao mã của mình chạy chậm Xác định các nút thắt cổ chai về hiệu suất và ngốn bộ nhớ trong khoa học dữ liệu sản xuất của bạn Các công việc Python với Sciagraph, trình lược tả luôn bật cho các công việc sản xuất hàng loạt Tìm hiểu các kỹ năng kỹ thuật phần mềm Python thực tế mà bạn có thể sử dụng trong công việc của mìnhĐăng ký nhận bản tin của tôi và tham gia cùng hơn 6500 nhà phát triển Python và nhà khoa học dữ liệu học các công cụ và kỹ thuật thực tế, từ hiệu suất Python đến đóng gói Docker, với một bài viết mới miễn phí trong hộp thư đến của bạn mỗi tuần Làm cách nào để phân tích cú pháp dữ liệu JSON trong Python?Nếu bạn có một chuỗi JSON, bạn có thể phân tích cú pháp chuỗi đó bằng cách sử dụng json. phương thức load() . Kết quả sẽ là một từ điển Python.
Làm cách nào để phân tích chuỗi JSON trong Python?Để phân tích chuỗi dữ liệu JSON thành đối tượng Python, hãy sử dụng json. loads() của gói dựng sẵn có tên json . json. phương thức loading() phân tích cú pháp chuỗi dữ liệu JSON được cung cấp và trả về một từ điển Python chứa tất cả dữ liệu từ JSON. |