मैं एक प्रोग्राम लिख रहा हूं जो निम्नलिखित कोड के साथ कई कार्यकर्ता प्रक्रियाओं (एक प्री-फोर्किंग मॉडल) का उपयोग करता है।
from multiprocessing import Process
for i in range(0,3):
Process(target=worker, args=(i,)).start()
मैं विंडोज का उपयोग करता हूं। मैंने देखा है कि वे अलग प्रक्रियाओं के रूप में चलाए जाते हैं जब मैं चाहता था कि वे इसके बजाय उपप्रक्रियाओं के रूप में प्रारंभ करें। मैं उन्हें मुख्य प्रक्रिया के उप-प्रक्रिया कैसे बना सकता हूं?
मैं उपप्रक्रिया मॉड्यूल का उपयोग करने में संकोच कर रहा हूं क्योंकि यह बाहरी प्रक्रियाओं को चलाने के लिए उपयुक्त लगता है (जहां तक मैंने इसका उपयोग किया है)।
एक अपडेट: ऐसा लगता है कि Windows नई प्रक्रियाओं को उप-प्रक्रियाओं के रूप में लॉन्च नहीं करता है। पाइथन विंडोज़ में getppid() (माता-पिता की पीआईडी प्राप्त करें) का समर्थन नहीं करता है।
3 जवाब
आप दीवार उपप्रक्रिया क्या करते हैं? मेरे लिए वे आपकी मुख्य प्रक्रिया की उपप्रक्रिया हैं। यहां मेरा उदाहरण और आउटपुट लौटा।
import time, os
from multiprocessing import Process
def worker():
print "I'm process %s, my father is %s" % (os.getpid(), os.getppid())
print "I'm the main process %s" % os.getpid()
for i in range(0,3):
Process(target=worker).start()
आउटपुट है:
I'm the main process 5897
I'm process 5898, my father is 5897
I'm process 5899, my father is 5897
I'm process 5900, my father is 5897
आपके पास मुख्य प्रक्रिया से जुड़ी 3 उपप्रक्रियाएं हैं ...
ऐसा लगता है कि आप यहां भ्रमित शब्दावली कर रहे हैं। एक उपप्रक्रिया है एक अलग प्रक्रिया है। जो प्रक्रियाएं बनाई जाएंगी वे आपके कार्यक्रम की मुख्य प्रक्रिया के बच्चों होंगी, और उस अर्थ में उपप्रक्रियाएं हैं। यदि आप थ्रेड चाहते हैं, तो multiprocessing
के बजाय multithreading
का उपयोग करें, लेकिन ध्यान दें कि पायथन एकाधिक थ्रेड के लिए एकाधिक कोर/सीपीयू का उपयोग नहीं करेगा।
मुझे
subprocess
मॉड्यूल का उपयोग करने में संकोच हो रहा है क्योंकि यह बाहरी प्रक्रियाओं को चलाने के लिए उपयुक्त लगता है
मुझे खेद है, मुझे यह टिप्पणी समझ में नहीं आई।
concurrent.futures
भी आज़मा सकते हैं, जो थ्रेडिंग के अधिक मैन्युअल बिट्स को छुपाता है।
संक्षिप्त उत्तर: http://docs.python.org/library/threading.html
लंबे समय तक: मुझे सवाल समझ में नहीं आया, ऐच्च्न्यू। विशिष्ट यूनिक्स मॉडल में, केवल एक प्रक्रिया शुरू हो सकती है हैं उप-प्रक्रियाएं। मुझे एक मजबूत भावना है कि हम दोनों के बीच एक शब्दावली संघर्ष है, मुझे नहीं पता कि कैसे सुलझाया जाए। ऐसा लगता है कि आपके मन में "आंतरिक प्रक्रिया" जैसा कुछ है; किसी भी भाषा या ऑपरेटिंग सिस्टम में इसका उदाहरण क्या है?
मैं प्रमाणित कर सकता हूं कि पायथन का सबप्रोसेस मॉड्यूल व्यापक रूप से उपयोग किया जाता है।
आप लिखते हैं "... कई काम करने वाले सूत्र ..." क्या आपने उस दस्तावेज़ को पढ़ा है जिसका मैं इस प्रतिक्रिया के शीर्ष पर पहली पंक्ति में संदर्भित करता हूं?
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।