البرمجة

تنظيم تنفيذ وظائف Python باستخدام Multiprocessing وQueue

عندما نتعامل مع سيناريوهات تشغيل الوظائف في لغة البرمجة Python، يُعد استخدام المكتبة المدمجة Queue خيارًا ممتازًا لتحقيق التفاعل بين وظائف متعددة. لكن يجب أولاً أن نعدل الكود الحالي ليتناسب مع هذا النهج.

للبداية، يجب أن نستخدم الدالة Queue لتبادل البيانات بين الوظائف. سنقوم بإنشاء اثنين من الوظائف الرئيسية، الأولى لقراءة الملف وإنشاء قائمة النطاقات، والثانية للتصفح والتقاط الصور. سيتم تشغيل الثانية بعد اكتمال الأولى باستخدام Queue.

قد يكون الكود على النحو التالي:

python
import Queue from multiprocessing import Process def domain_create(target_site_list, queue): for site in target_site_list.readlines(): site = site.strip() url = "http://" + site domain_list = open("LiveSite.txt", "a") domain_list.write(url + "\n") domain_list.close() queue.put("Domain Creation Completed") def site_browser(queue): target_site = "LiveSite.txt" tar = open(target_site, "rb") for link in tar.readlines(): link = link.strip() url_sites = "http://www." + link # Add your browser automation code here # ... queue.put("Site Browsing Completed") if __name__ == "__main__": target_site_file = "target_list.txt" target_site_list = open(target_site_file, "rb") # Create a queue to communicate between processes communication_queue = Queue.Queue() # Create and start the domain creation process domain_process = Process(target=domain_create, args=(target_site_list, communication_queue)) domain_process.start() # Wait for the domain creation to complete domain_process.join() # Start the site browsing process site_process = Process(target=site_browser, args=(communication_queue,)) site_process.start() # Wait for the site browsing to complete site_process.join()

يتم تشغيل الكود الخاص بالقراءة وإنشاء النطاقات في عملية منفصلة، وعندما يتم الانتهاء من ذلك، يتم تشغيل الوظيفة الثانية للتصفح. الاستفادة من مكتبة multiprocessing تسمح لنا بتنظيم التنفيذ المتزامن للوظائف ومشاركة البيانات بينها باستخدام الطابور Queue.

المزيد من المعلومات

في هذا السياق، يمكننا التفصيل أكثر حول بعض الجوانب المهمة لفهم الكود وتنفيذه بشكل فعال.

  1. استخدام multiprocessing و Queue:

    • تعتبر multiprocessing هي واحدة من مكتبات Python التي تُستخدم لتحقيق التعددية في التنفيذ، وتسمح بتشغيل عمليات متعددة في نفس الوقت.
    • Queue هي هيكل بيانات يسمح بمشاركة البيانات بين عمليات Python. في هذا السياق، يتم استخدامه للإشارة إلى اكتمال العمليات وبدء العمليات التالية.
  2. التحكم في تدفق البرنامج باستخدام if __name__ == "__main__":

    • يستخدم هذا السطر للتحقق مما إذا كان البرنامج يعمل كبرنامج رئيسي أم لا. يتجنب ذلك مشكلات الاستمرارية عند استخدام التعددية في Python.
  3. عمليات الكتابة والقراءة في الملفات:

    • يتم استخدام open لفتح الملفات بنمط القراءة ("rb") والكتابة ("a")، حيث يتم إضافة "\n" للتحقق من أن كل عنصر يتم كتابته في سطر منفصل في الملف.
  4. التحكم في العمليات:

    • يتم استخدام join للانتظار حتى اكتمال العمليات الفرعية (العمليات) قبل الانتقال إلى الخطوة التالية، مما يضمن تنظيم التنفيذ وتجنب الاشتباكات.
  5. تشغيل البرنامج:

    • عند تشغيل البرنامج، يتم فتح ملف target_list.txt وتمريره إلى العملية الأولى (domain_create)، ثم تنتظر حتى اكتمالها. بعد ذلك، تبدأ العملية الثانية (site_browser) وتنتظر حتى اكتمالها.

هذا التقسيم والتنظيم يجعل الكود أكثر فهمًا وسهولة صيانة، كما يُمكن التحكم بشكل أفضل في تسلسل تنفيذ الوظائف بما يتيح للمبرمج التحكم في تدفق البرنامج بشكل فعال.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر