"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > एकाधिक \'बिल्ली को कैसे निष्पादित करें | zgrep\' पायथन में समवर्ती कमांड?

एकाधिक \'बिल्ली को कैसे निष्पादित करें | zgrep\' पायथन में समवर्ती कमांड?

2024-11-04 को प्रकाशित
ब्राउज़ करें:876

How to Execute Multiple \'cat | zgrep\' Commands Concurrently in Python?

एकाधिक 'बिल्ली निष्पादित करें | zgrep' समवर्ती रूप से कमांड करता है

इस पायथन लिपि में, एकाधिक 'cat | zgrep' कमांड को रिमोट सर्वर पर क्रमिक रूप से निष्पादित किया जाता है और उनके आउटपुट को प्रोसेसिंग के लिए व्यक्तिगत रूप से एकत्र किया जाता है। हालाँकि, दक्षता बढ़ाने के लिए, हमारा लक्ष्य इन कमांडों को समानांतर में निष्पादित करना है। &&&]

#!/usr/bin/env Python सबप्रोसेस आयात पोपेन से # उपप्रक्रियाओं की एक सूची बनाएं प्रक्रियाएं = [पोपेन("इको {आई:डी}; स्लीप 2; इको {आई:डी}"।फॉर्मेट(आई=आई), शेल=ट्रू) फॉर आई इन रेंज(5)] # उपप्रक्रियाओं की स्थितियाँ एकत्र करें एग्जिटकोड = [p.wait() for p in प्रक्रियाओं]

यह कोड एक साथ पांच शेल कमांड लॉन्च करता है और उनके एग्जिट कोड एकत्र करता है। ध्यान दें कि इस संदर्भ में & वर्ण आवश्यक नहीं है क्योंकि पॉपन डिफ़ॉल्ट रूप से आदेशों के पूरा होने की प्रतीक्षा नहीं करता है। आपको उनकी स्थिति को पुनः प्राप्त करने के लिए .wait() को स्पष्ट रूप से कॉल करना होगा। . निम्नलिखित उदाहरण पर विचार करें:

#!/usr/bin/env python
from subprocess import Popen

# create a list of subprocesses
processes = [Popen("echo {i:d}; sleep 2; echo {i:d}".format(i=i), shell=True) for i in range(5)]

# collect statuses of subprocesses
exitcodes = [p.wait() for p in processes]

यह कोड समानांतर में उपप्रक्रियाएं चलाता है और थ्रेड्स का उपयोग करके समवर्ती रूप से उनके आउटपुट एकत्र करता है।

Asyncio-आधारित समानांतर निष्पादन

पायथन संस्करण 3.8 और उससे ऊपर के लिए, एसिंकियो उपप्रक्रियाओं को समवर्ती रूप से निष्पादित करने का एक शानदार तरीका प्रदान करता है। यहाँ एक उदाहरण है:

#!/usr/bin/env python
from multiprocessing.dummy import Pool # thread pool
from subprocess import Popen, PIPE, STDOUT

# create a list of subprocesses with output handling
processes = [Popen("echo {i:d}; sleep 2; echo {i:d}".format(i=i), shell=True,
                   stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
             for i in range(5)]

# collect outputs in parallel
def get_lines(process):
    return process.communicate()[0].splitlines()

outputs = Pool(len(processes)).map(get_lines, processes)

यह कोड दर्शाता है कि एक ही थ्रेड के भीतर उपप्रक्रियाओं को एक साथ कैसे चलाया जाए।

इन दृष्टिकोणों को लागू करके, आप एकाधिक निष्पादित करके अपनी स्क्रिप्ट की दक्षता में उल्लेखनीय सुधार कर सकते हैं 'बिल्ली | zgrep' रिमोट सर्वर पर समानांतर में कमांड करता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3