السلام عليكم. جربت اسوي برنامج بسيط باستخدام multiprocessing و الي قراته انه ينفذ المهام بشكل متوازي و لكن ما فهمت لماذا البرنامج ما يوقف و يعطي النتيجة التي اريدها الا اذا استخدمت time.sleep() و قرات ان هذا ليس جيد في multiprocessing لأنه لا يعطي الفائدة من هذه الميزة. انا جديد في استخدام ثريد و ملتي بروسيسينق غيره و لكن ما فهمت ليش ما تظهر لي النتيجة الا اذا استخدمت أداة time.sleep
import multiprocessing
import time
from multiprocessing importManagerdef num(x,y):while y.value==Falseand x!=10:
x.value+=1print(x.value,"\n")def checkNum(x,y):while x.value<=10and y.value==False:print(x.value,":")if x.value>=10:print("x equal or greater than 10\n")
y.value=Trueelif x.value<10:print("x desnt equal or greater than 10\n")
y.value=Falseif __name__ =='__main__':
manager=Manager()
x=manager.Value("d",0)
y = manager.Value("b",False)
th1=multiprocessing.Process(target=num,args=(x,y))
th2=multiprocessing.Process(target=checkNum,args=(x,y))
th1.start()
th2.start()
th1.join()
th2.join()
بدون time.sleep البرنامج يستمر الى ولا يتوقف خصوصا دالة(function) الي اسمها num()
import multiprocessing
import time
from multiprocessing importManagerdef num(x,y):while y.value==Falseand x!=10:
x.value+=1print(x.value,"\n")
time.sleep(.01)#####def checkNum(x,y):while x.value<=10and y.value==False:print(x.value,":")if x.value>=10:print("x equal or greater than 10\n")
y.value=Trueelif x.value<10:print("x desnt equal or greater than 10\n")
y.value=Falseif __name__ =='__main__':
manager=Manager()
x=manager.Value("d",0)
y = manager.Value("b",False)
th1=multiprocessing.Process(target=num,args=(x,y))
th2=multiprocessing.Process(target=checkNum,args=(x,y))
th1.start()
th2.start()
th1.join()
th2.join()
هنا مع استخدام time.sleep() لكن في هذه البرنامج يكمل عمله على اكمل وجه و يظهر النتيجة الي اريدها.
هل استخدام time.sleep سيء ام ان في الكود الخاص بي يجب استخدامه لأحصل على النتيجة التي اريدها؟
السؤال
Zerious San
السلام عليكم. جربت اسوي برنامج بسيط باستخدام multiprocessing و الي قراته انه ينفذ المهام بشكل متوازي و لكن ما فهمت لماذا البرنامج ما يوقف و يعطي النتيجة التي اريدها الا اذا استخدمت time.sleep() و قرات ان هذا ليس جيد في multiprocessing لأنه لا يعطي الفائدة من هذه الميزة. انا جديد في استخدام ثريد و ملتي بروسيسينق غيره و لكن ما فهمت ليش ما تظهر لي النتيجة الا اذا استخدمت أداة time.sleep
بدون time.sleep البرنامج يستمر الى ولا يتوقف خصوصا دالة(function) الي اسمها num()
هنا مع استخدام time.sleep() لكن في هذه البرنامج يكمل عمله على اكمل وجه و يظهر النتيجة الي اريدها.
هل استخدام time.sleep سيء ام ان في الكود الخاص بي يجب استخدامه لأحصل على النتيجة التي اريدها؟
6 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.