דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. שמירת נתון לזמן מסויים ברשימה | פייתון

שמירת נתון לזמן מסויים ברשימה | פייתון

מתוזמן נעוץ נעול הועבר תכנות
11 פוסטים 4 כותבים 244 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • חגיח מנותק
    חגיח מנותק
    חגי
    כתב ב נערך לאחרונה על ידי חגי
    #2

    אני בד"כ עושה ככה:

    import threading
    def addItem(_list, item, delay=600):
        _list.append(item)
        threading.Timer(delay, lambda: _list.remove(item)).start()
    

    הרעיון הוא ליצור "משימה" אוטומטית למחוק את הערך עוד X זמן

    השימוש -

    l = []
    addItem(l, 'my item', 5) # 5 seconds
    

    cee38fe0-ed10-4297-aeb2-9117ad938efd-image.png

    נ.ב.
    יאלצו מתכנתי הפייתון לסלוח על ההרגל המגונה שלי להשתמש בcamelCase בפייתון. אני מאמין שזה בלתי נסבל אבל אני לא יכול לשלוט בזה. התנצלותי הכנה.

    A תגובה 1 תגובה אחרונה
    3
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      כתב ב נערך לאחרונה על ידי
      #3

      @צבי-ש תראה גם תוצאות גוגל על python list with ttl.

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      תגובה 1 תגובה אחרונה
      2
      • A מנותק
        A מנותק
        aaron
        השיב לחגי ב נערך לאחרונה על ידי
        #4

        @חגי כתב בשמירת נתון לזמן מסויים ברשימה | פייתון:

        יאלצו מתכנתי הפייתון לסלוח על ההרגל המגונה שלי להשתמש בcamelCase בפייתון. אני מאמין שזה בלתי נסבל אבל אני לא יכול לשלוט בזה. התנצלותי הכנה.

        קודם צריך לסלוח לך על שימוש בטרדניג שלא לצורך..

        aaron.tchumim@gmail.com
        Hetzner - שרתים וירטואליים ופיזיים במחירים מעולים (קישור שותפים)

        ווצאפ API - תיעוד שירות API לא רשמי.

        חגיח תגובה 1 תגובה אחרונה
        1
        • חגיח מנותק
          חגיח מנותק
          חגי
          השיב לaaron ב נערך לאחרונה על ידי חגי
          #5

          @aaron
          אכן, אני לא מתכנת פייתון (הייתי בתקופה של פייתון 2.7) ואין לי מושג איך משתמשים בasyncio, השתמשתי במה שנוח לי בשביל להדגים את הקונספט.
          ניסיתי לשחק כמה דקות עם asyncio בשביל ליצור משימה ברקע בלי לחסום את הת'רד הראשי, ולא הצלחתי.

          (הייתי מתכנת פייתון בתקופה ש-2.7 עוד היה מגניב, ו-3.0 היה משהו ניסיוני)

          תגובה 1 תגובה אחרונה
          0
          • A מנותק
            A מנותק
            aaron
            כתב ב נערך לאחרונה על ידי
            #6

            בשביל ליצור משימה אתה צריך להשתמש בcreate_task או ensure_future, בכל מקרה, לא חושב שנכון ליצור משימה כדי לפתור את הבעיה שלך.
            יותר הגיוני להשתמש עם cache TTL או פשוט לשמור את הזמן ביחד עם הערך.

            aaron.tchumim@gmail.com
            Hetzner - שרתים וירטואליים ופיזיים במחירים מעולים (קישור שותפים)

            ווצאפ API - תיעוד שירות API לא רשמי.

            חגיח תגובה 1 תגובה אחרונה
            1
            • צבי-שצ מחובר
              צבי-שצ מחובר
              צבי-ש
              כתב ב נערך לאחרונה על ידי
              #7

              תודה לכולם על התשובות המחכימות,
              בסוף הצורך שלי השתנה בקצת , והסתדרתי בצורה הזאת:

              Sentences = []
              
              if text_to_upload in Sentences:
                      return
              if len(Sentences) > 50:
                 Sentences.pop(0)
                 Sentences.append(text_to_upload)
              

              כיף לגלות דברים חדשים.
              חוק ה-50-50-90: בכל פעם שיש סיכוי של 50-50 שמשהו יעבוד, יש סיכוי של 90 אחוז שהוא לא. מקור

              תגובה 1 תגובה אחרונה
              0
              • חגיח מנותק
                חגיח מנותק
                חגי
                השיב לaaron ב נערך לאחרונה על ידי
                #8

                @aaron מצד מה זה לא נכון? העלויות סיבובי מעבד זניחות במקרה כזה.
                אתה יכול להרחיב על cache TTL? נראה לי שאני מכיר את זה בהקשר אחר כי אני לא מבין איך זה נכנס פה.

                או פשוט לשמור את הזמן ביחד עם הערך.

                למה זה יותר נכון? אתה תצטרך בדיקה בכל פנייה לרשימה שהערך הזה "תקף", אז אתה חייב ליצור גם פונקציה לגשת לאלמנטים במקום פשוט לגשת אליהם, לא נראה לי שזה מה ש @צבי-ש התכוון.

                A תגובה 1 תגובה אחרונה
                0
                • dovidD מנותק
                  dovidD מנותק
                  dovid ניהול
                  כתב ב נערך לאחרונה על ידי dovid
                  #9

                  @צבי-ש הניח את החידה בלי להסביר למה בדיוק הוא צריך את זה.
                  cache ttl מתאים כשהצורך הוא חיסכון בזיכרון. במקרה כזה שמירת הזמן בערך לא תעזור, כי ערך שלא יפנו אליו ולא ייבדק יישאר נצחית ברשימה.
                  בצרכים אחרים, למשל שהערך לא תקף אחרי X זמן, אז שמירת הזמן היא מצויינת.

                  מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                  בכל נושא אפשר ליצור קשר dovid@tchumim.com

                  תגובה 1 תגובה אחרונה
                  0
                  • dovidD מנותק
                    dovidD מנותק
                    dovid ניהול
                    כתב ב נערך לאחרונה על ידי dovid
                    #10

                    כעת ביקשתי מGPT שיסביר לי את הקוד של @צבי-ש,
                    והבנתי שהוא סה"כ רוצה רשימה מוגבלת לחיסכון בזיכרון בלי קשר בכלל לזמן.
                    בעיקרון זה בדיוק הרציונל שך cache ttl בד"כ, והפרנציפ של lru-cache הוא בדיוק בשביל זה (אני מכיר את זה מנוד אבל בפייתון זה בטוח קיים פי כמה).
                    בכל אופן המימוש ש@צבי-ש עשה, נראה לי מפה: https://stackoverflow.com/a/17526715/1271037
                    שאפשר לקבל את ההתנהגות הזאת על ידי collections.deque עם הגבלת אורך בעת הבניה.

                    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                    בכל נושא אפשר ליצור קשר dovid@tchumim.com

                    תגובה 1 תגובה אחרונה
                    1
                    • A מנותק
                      A מנותק
                      aaron
                      השיב לחגי ב נערך לאחרונה על ידי
                      #11

                      @חגי כתב בשמירת נתון לזמן מסויים ברשימה | פייתון:

                      מצד מה זה לא נכון? העלויות סיבובי מעבד זניחות במקרה כזה.

                      משימות סינכרוניות או לא, קשות יותר לדיבוג.
                      לבדוק כל פעם זמן זה באמת לא ישפיע בכלום על זמן התגובה.

                      aaron.tchumim@gmail.com
                      Hetzner - שרתים וירטואליים ופיזיים במחירים מעולים (קישור שותפים)

                      ווצאפ API - תיעוד שירות API לא רשמי.

                      תגובה 1 תגובה אחרונה
                      1

                      בא תתחבר לדף היומי!
                      • התחברות

                      • אין לך חשבון עדיין? הרשמה

                      • התחברו או הירשמו כדי לחפש.
                      • פוסט ראשון
                        פוסט אחרון
                      0
                      • דף הבית
                      • קטגוריות
                      • פוסטים אחרונים
                      • משתמשים
                      • חיפוש
                      • חוקי הפורום