في المعالجة المتعددة، تعد مشاركة قائمة الانتظار بين العمليات الأصلية والتابعة أمرًا ضروريًا للتواصل واسترجاع النتائج. ومع ذلك، فإن استخدام application_async لبدء العمليات المنفذة غير المتزامنة يمثل تحديات في مشاركة قوائم الانتظار.
للتغلب على الخطأ "يجب مشاركة كائنات قائمة الانتظار فقط بين العمليات من خلال الميراث"، يمكننا استخدام multiprocessing.Manager. تمكن فئة المدير هذه من إنشاء وإدارة الموارد المشتركة، بما في ذلك قوائم الانتظار.
من خلال تضمين عملية إنشاء قائمة الانتظار الخاصة بنا في سياق المعالجة المتعددة.Manager()، يمكننا جعلها في متناول جميع العاملين. هذه هي كيفية تعديل الكود:
if __name__ == '__main__':
pool = multiprocessing.Pool(processes=3)
m = multiprocessing.Manager()
q = m.Queue()
workers = pool.apply_async(worker, (33, q))
الآن، يمكن لكل عامل التفاعل مع كائن q المشترك وإبلاغ النتائج إلى العملية الأساسية. يسمح هذا الأسلوب بتوصيل النتائج بكفاءة وموثوقية مع الحفاظ على الطبيعة غير المتزامنة لـ application_async.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3