ich mit einem Queryset von mehr als 5 Millionen + Artikel (für Batch-ML Zwecke) zu tun habe, und ich muss die queryset gespalten (so kann ich die Multithreading-Operationen durchführen) ohne die queryset zu Auswertung wie ich nur je brauchen Um auf jedes Element in dem Abfrage-Set einmal zuzugreifen, und so möchte ich nicht die Abfrage-Set-Elemente zwischenspeichern, die das Auswerten verursacht.Wie teilen Sie ein Django-Abfrage-Set auf, ohne es zu bewerten?
Ist es möglich, die Elemente in einem Abfrage-Set auszuwählen und dieses ohne Auswertung zu teilen? oder muss ich mich an sie wenden, indem ich mit Limits [: size] nach mehreren Abfragegruppen suche, um dieses Verhalten zu erreichen?
NB: Ich bin mir bewusst, dass ein Iterable kann es ohne die Bewertung durch einen queryset zu Zyklus verwendet werden, aber meine Frage ist damit zusammen, wie ich kann ich eine queryset geteilt (wenn möglich), um dann eine iterable auf jedem laufen die geteilten Abfragesätze.
Können Sie darüber iterieren und lassen Sie die Worker-Threads abholen? Nur so kann ich mir vorstellen, dass es mit einer einzigen Abfrage über Django funktioniert. (Ziemlich viel nur einen threadsicher Iterator herumreichen.) – Ryan
Eine Django-Abfrage wird nicht ausgewertet, bis sie eine forcierende Auswertung trifft. Und es kann geschnitten werden. MyQuery [1000: 11000] würde Ihnen also einen Teil der Abfrage sehr sauber geben. Und nein, es bewertet nicht die ganze Sache, um diese Scheibe zu bekommen. –