Tôi hiện đang làm việc với một tệp có hơn 2 triệu dòng. Tôi đã tách các dòng thành danh sách các phần tử (ví dụ: [a,b,c,d]
= 1 dòng, các từ được tách biệt).Tối ưu hóa vòng lặp Python
Tôi đang cố gắng sử dụng đoạn mã sau để đi qua tất cả các dòng:
for a in aud:
for esps in final:
if a[0] in final[esps]:
a[0] = esps
Trong lần đầu tiên cho vòng lặp Tôi đang đề cập đến 2 triệu + dòng. Trong vòng lặp thứ hai, nó đi qua một từ điển với các khóa 2010, mỗi khóa có thể có ít nhất 50 giá trị tương ứng. Tôi muốn tìm phần tử a[0]
trong các dòng bằng với các giá trị trong từ điển. Nếu chúng khớp nhau, tôi thay đổi phần tử a[0]
trong dòng đã chọn thành giá trị của khóa của từ điển.
Vấn đề là mã này phải mất độ tuổi để chạy và tôi không hiểu nhiều (không có gì) về tối ưu hóa và cách chạy nhanh hơn nhiều. Tôi xin cảm ơn rất nhiều nếu có ai có thể cho tôi biết cách làm điều gì đó nhanh hơn thế này.
hmm, bạn có giới hạn đối với chỉ một máy tính? Tôi nghĩ bạn có thể sử dụng một số công nhân để làm điều đó. Ngay cả với một máy tính, bạn cũng có thể tạo nhiều công nhân với một CPU đa lõi –
Đó là một chút khó khăn để undestand vấn đề thực tế của bạn cho mô tả này không có dữ liệu ví dụ. Có phải tất cả 50 khóa trong mỗi chuỗi từ điển "cuối cùng" phải không? – jsbueno
Điều này sẽ không có tác dụng phụ của việc đột biến một đối tượng trong khi lặp lại nó? – pylang