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

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

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

סטרים בפייתון

מתוזמן נעוץ נעול הועבר תוכנה
3 פוסטים 2 כותבים 316 צפיות 2 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • MusiCodeM
    MusiCodeM
    MusiCode
    כתב ב נערך לאחרונה על ידי MusiCode
    #1

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

    מישהו יודע משהו על הנושא?

    מה אני מנסה לעשות:
    אני מנסה לעשות הזרמה של קלט מMySQLDump, לGzip כדי לכווץ, ומשם להעלאה לשרת כלשהו.

    אציין כי הכל (קבלת הקלט -> דחיסה -> העלאה) חייב לקרות בבת אחת, כי הגודל הכולל הוא לפחות 7 GB, ואני לא רוצה עומסים על הזיכרון או הדיסק קשיח.

    הצלחתי להזרים לGzip עם קומבינה מסובכת:

    io = io.BytesIO() # אובייקט שמחזיק את הצ'אנק
    i = 0
    
    out_file = open("backup.sql", "wb") # הדמייה של האובייקט שיקלוט את הנתונים
    
    with gzip.GzipFile("backup.sql", "wb", fileobj=io) as w_gz:
    
        for chank in iter(lambda:  f.read(chank_size), b''): # לולאת ההזרמה
    
            w_gz.write(chank) # כיווץ
            w_gz.flush()
            i += chank_size
    
            out_file.write(io.getvalue()) # העתקת הצ'אנק המכווץ
    
            io.seek(0) # מחיקת הצ'אנק מהאובייקט הזמני
            io.truncate(0)
    

    נראה לי מאוד פרימיטיבי ולא מוצלח.
    בעיקר שב-NodeJS כל זה קורה בשורה אחת.

    source.pipe(zlib).pipe(destination)
    

    מישהו יודע משהו יותר?

    ומעכשיו אני JSניק שרוף יותר...
    מצפה מאוהדי פייתון לבוא ולהגן, כי אחרת...

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

      מהתיעוד הרשמי.
      השאלה מה זה אצלך קובץ המקור ולמה אתה קורא לו סטרים..

      import gzip
      import shutil
      with open('/home/joe/file.txt', 'rb') as f_in:
          with gzip.open('/home/joe/file.txt.gz', 'wb') as f_out:
              shutil.copyfileobj(f_in, f_out)
      

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

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

      MusiCodeM תגובה 1 תגובה אחרונה
      0
      • A aaron

        מהתיעוד הרשמי.
        השאלה מה זה אצלך קובץ המקור ולמה אתה קורא לו סטרים..

        import gzip
        import shutil
        with open('/home/joe/file.txt', 'rb') as f_in:
            with gzip.open('/home/joe/file.txt.gz', 'wb') as f_out:
                shutil.copyfileobj(f_in, f_out)
        
        MusiCodeM
        MusiCodeM
        MusiCode
        כתב ב נערך לאחרונה על ידי MusiCode
        #3

        @aaron קובץ המקור הוא כאמור זרימה של נתונים מהגיבוי של MySQL עיי"ש.
        הנתונים הם 7 GB ולכן חשוב לי שהכל יהיה בזרימה, שלא יתפוס זיכרון.
        היעד הוא העלאה לשרת.

        רק בדוגמא, הכל עם קבצים פיזיים.

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

        שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.

        נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.

        בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗

        הרשמה התחברות
        תגובה
        • תגובה כנושא
        התחברו כדי לפרסם תגובה
        • מהישן לחדש
        • מהחדש לישן
        • הכי הרבה הצבעות


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

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

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