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

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

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

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

מתוזמן נעוץ נעול הועבר תוכנה
3 פוסטים 2 כותבים 207 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • 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
      • MusiCodeM מנותק
        MusiCodeM מנותק
        MusiCode
        השיב לaaron ב נערך לאחרונה על ידי MusiCode
        #3

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

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

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

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

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

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