2010-07-30 10 views
5

मैंने कभी भी थ्रेड का उपयोग करने वाले किसी भी कोड को नहीं लिखा है।धागे कब?

मेरे पास एक वेब एप्लिकेशन है जो POST अनुरोध स्वीकार करता है, और अनुरोध के शरीर में डेटा के आधार पर एक छवि बनाता है।

क्या मैं छवि निर्माण के लिए एक धागा को स्पिन करना चाहता हूं, ताकि सर्वर को छवि बनने तक फांसी से रोका जा सके? क्या यह एक उचित उपयोग है, या केवल एक समाधान की तलाश में एक समाधान है?

कृपया मेरे पास होने वाली किसी भी गलतफहमी को सही करें।

+0

पायथन में थ्रेडिंग एक और जानवर है। –

+0

तो मैंने सुना है। मुझे यकीन नहीं है कि मैं समझता हूं कि जीआईएल क्यों फंस गया है। किसी भी तरह से, यह पायथन के साथ प्रश्न टैग करने के लिए प्रासंगिक लग रहा था क्योंकि वह भाषा है जिसका मैं उपयोग कर रहा हूं। –

+0

पाइथन में थ्रेडिंग से मल्टीप्रोसेसिंग बेहतर है। – nmichaels

उत्तर

2

सिंक्रनाइज़ रूप से HTTP अनुरोधों को संभालने के लिए सामान्य दृष्टिकोण प्रत्येक अनुरोध के लिए प्रत्येक थ्रेड के लिए नए धागे को स्पॉन (या फिर से उपयोग करें) नया थ्रेड करना है।

हालांकि, जीआईएल और कुछ आई/ओ के कारण पाइथन थ्रेड HTTP के लिए बहुत अच्छे नहीं हैं, और अन्य थ्रेड सहित अन्य ऐप को अवरुद्ध करने वाले अन्य कॉल।

आपको इस उपयोग के लिए मल्टीप्रोसेसिंग मॉड्यूल में देखना चाहिए। कुछ कार्यकर्ता प्रक्रियाओं को जन्म दें, और फिर प्रक्रिया के लिए अनुरोध पास करें।

3

धागे या यहां तक ​​कि प्रक्रियाओं के माध्यम से इसे संभालने के बारे में सोचने के बजाय, इस तरह की चीज़ों को प्रबंधित करने के लिए Celery जैसे वितरित कार्य प्रबंधक का उपयोग करने पर विचार करें।

+0

यह मुझे क्या खरीदता है? –

+0

@mm_food, जैसा कि मैं समझता हूं, यह आपको कई बार कंप्यूटिंग के लिए कई होस्ट्स का उपयोग करने देता है, साथ ही यह मल्टीप्रोसेसिंग का उपयोग करके समांतरता को संभालता है। –

+0

मैंने साइट की जांच की और मैंने देखा कि सेलेरी क्रॉन-जैसे कार्यों को संभालती है, जो कि मैं एक ही प्रोजेक्ट के लिए उपयोग करना चाहता हूं। सलाह के लिये धन्यवाद। –

संबंधित मुद्दे