ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
אורח · ·
 

הודעה פורסם: 13/02/2018 - 18:15
נושא ההודעה: לומד פייתון - מבקש הכוונה לגבי מיקבול

שלום
אשמח לעזרתכם
יש לי ניסיון של כמה שנים בלינוקס bash, perl
אני לומד פייתון ומנסה להעמיק לאט לאט את היכולות שלי
עברתי על התעוד של מקבול תהליכים בפייתון ברפרוף כאן:
https://docs.python.org/3.6/library/multiprocessing.html
קראתי כמה דוגמאות ברשת - ברוב המקרים משתמשים ב POOL שם ה API פשוט, קל ונח לשימוש.
אני רוצה להכיר ולהתנסות קצת יותר במיקבול.
האם אשמח להפנייה לתרגול בנושא ולהכוונה להסברים עם דוגמאות אינן משתמשות בPOOL.

אני רוצה להבין בין השאר:
1. האם שימוש במודול multiprocessing יכול לשפר ביצועים גם על מכונות וירטואליות בפעולות שאינן מערבות I/O
2. כללי אצבע לעבודה עם המודול:
* טיפול בשגיאות
* העברת מידע בין התהליכים
* שימוש באובייקטים משותפים לקריאה או לכתיבה.

עד כה הסתבכתי בעיקר במצב שבו רציתי להפעיל מתוך אובייקט מתודה של האובייקט בעזרת MAP.
ניסיתי להשתמש בitertools אבל קיבלתי הודעות שגיאה:
Can't pickle <type '
הפתרון היה להוציא את הלוגיקה לפונקציה חיצונית באותו המודול.
זה מעקף שנובע מחוסר הבנה שלי.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
mksoftלא בפורום כעתSite Admin ת.הצטרפות: 17/03/2002 · הודעות: 10514 · מיקום: כדור הארץ
 

הודעה פורסם: 13/02/2018 - 20:00
נושא ההודעה:

קטעי קוד יעזרו.

_________________
הבלוג שלי
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית שלח דוא\ ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 13/02/2018 - 23:48
נושא ההודעה:

אני מניח שאתה שואל לגבי הבעיה שעקפתי:

קוד:

from multiprocessing.pool import Pool
import requests



class testmp():

    def get_page(self,url):
        r = requests.get(url)
        return r

    def get_data(self,urls):
        p=Pool()
        gp =lambda u : self.get_page(u)
        requests_iter=p.map(gp , urls)
        return requests_iter




if __name__ == '__main__':
    t= testmp()
    boi_urls=[
        "http://www.boi.org.il/he/Markets/Documents/yazigmizt.xlsx",
        "http://www.boi.org.il/he/Markets/Documents/yaz0106.zip",
        "http://www.boi.org.il/he/Markets/Documents/yaz9296.zip"
    ]
    r_itr = t.get_data(urls=boi_urls)
    print (list(r_itr))


אבל יותר חשוב לי לראות ולקרוא קוד שלא עובד עם POOL ולקבל תשובות למה ששאלתי.
להבין מתי אני רוצה להשתמש בכל אחת מהאפשרויות.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
mksoftלא בפורום כעתSite Admin ת.הצטרפות: 17/03/2002 · הודעות: 10514 · מיקום: כדור הארץ
 

הודעה פורסם: 14/02/2018 - 09:30
נושא ההודעה:

ראה פה לדוגמאות ללא Pool:
https://pymotw.com/3/multiprocessing/basics.html

_________________
הבלוג שלי
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית שלח דוא\ ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
הצגת הודעות מלפני:     
מעבר אל:  
כל הזמנים הם GMT + 2 שעות
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
PNphpBB2 © 2003-2004 

תוכן הדיון

  1. אורח
  2. mksoft
  3. אורח
  4. mksoft