Câu trả lời ngắn gọn là các hoạt động không đồng bộ đang làm xáo trộn hồ sơ của bạn.
Tài liệu về bq.query
cho biết kết quả google.cloud.bigquery.job.QueryJob
đối tượng là một không đồng bộ công việc truy vấn. Điều này có nghĩa là, sau khi truy vấn được gửi, trình thông dịch python không chặn cho đến khi bạn cố gắng sử dụng kết quả của truy vấn với một trong các QueryJob
đồng bộ phương thức, to_dataframe()
. Một phần đáng kể trong 87 giây mà bạn đang thấy có thể chỉ dành để chờ truy vấn trả lại.
Bạn có thể đợi truy vấn hoàn tất bằng cách gọi QueryJob.done
lặp đi lặp lại cho đến khi nó trả về true, sau đó gọi câu lệnh in cấu hình thứ hai của bạn.
Đây không hoàn toàn là một sự tối ưu hóa mã của bạn, nhưng hy vọng sẽ giúp đi đúng hướng. Có thể một số điều chỉnh vòng quay của gấu trúc có thể hữu ích, nhưng tôi nghĩ rằng có thể phần lớn thời gian của bạn đang được dành để chờ đọc / ghi từ cơ sở dữ liệu của bạn và việc viết hiệu quả hơn hoặc một số lượng lớn hơn các truy vấn nhỏ hơn sẽ là của bạn tùy chọn duy nhất để cắt giảm tổng thời gian.