Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι

ΘΕΜΑ: lru_cache

lru_cache 7 Χρόνια 9 Μήνες πριν #4171

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 249
  • Ληφθείσες Ευχαριστίες 70
Προσπαθούσα πριν από καιρό να λύσω ένα πρόβλημα στο py.checkio.org py.checkio.org/mission/probably-dice/
και έγραψα ένα κώδικα που είχε μεγάλες απαιτήσεις σε χρόνο (πολύ μεγάλες)
Ο κώδικάς μου ήταν ο παρακάτω
def nominator (a,b,c):
  if c<a:
    return 0
  if c>a*b:
    return 0
  if c==a*b or c==a:
    return 1
  if c<=0:
    return 0
  if a==1:
    return 1
  else:
    suma=0
    i=1
    while i<=b:
      suma+=(nominator(a-1,b,c-i))
      i+=1
    return suma
 
def probability(a, b, c):
  denominator=b**a
  nom=nominator (a,b,c)
  return round(nom/denominator,4)

Λόγω της εξαιρετικά χαμηλής ταχύτητας αναγκάστηκα να αλλάξω τη συνάρτηση του nominator
σε ένα έκτρωμα που όμως δούλευε και ήταν γρήγορο (πολύ γρήγορο)

Δεν θα χρειαζόταν να το κάνω αν ήξερα την lru_cache την δοκίμασα σήμερα και είναι super

Άν δεν την γνωρίζετε και έχετε παρόμοια προβλήματα ταχύτητας λόγω recursion (συναρτήσεις που καλούν τον εαυτό τους) ρίξτε μια ματιά.docs.python.org/3/library/functools.html...#functools.lru_cache
Τελευταία διόρθωση: 7 Χρόνια 9 Μήνες πριν από Theo.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.375 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου