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

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

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

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

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

    אני רוצה לשמור ברשימה מלא משפטים, אבל שכל משפט יימחק מהרשימה אחרי 10 דקות

    למשל אני מכניס את
    1 טוב ציפור אחת ביד מ10 על העץ
    2 הנה מה טוב ומה נעים שבת אחים גם יחד

    ואחרי 5 דקות אני מוסיף עוד משפט
    3 מה יתרון לאדם בכל עמלו שיעבוד תחת השמש

    אז אני רוצה שאם אני ייגש אל הרשימה הזאת ב5 דקות הראשונות אני יקבל את 3 המשפטים, אבל אם אחרי 5 דקות (שהם 10 דקות מההכנסה של ה2 משפטים הראשונים) אני יקבל רק את המשפט השלישי, וכן הלאה

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

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

    תגובה 1 תגובה אחרונה
    0
    • חגיח מנותק
      חגיח מנותק
      חגי
      כתב ב נערך לאחרונה על ידי חגי
      #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
                        • דף הבית
                        • קטגוריות
                        • פוסטים אחרונים
                        • משתמשים
                        • חיפוש
                        • חוקי הפורום