2010-06-04 13 views
7

मैं इस सब प्रचार को पाइथन के लिए ट्विस्ट के बारे में सुनता रहता हूं, लेकिन मुझे बस यह सादा भ्रमित लगता है। आपको क्या लगता है कि उपयोग करने के लिए और अधिक आसान है? सरल सॉकेट या मोड़ लागू?क्या कोई अच्छा मोड़ है?

+0

सरल सॉकेट? मुड़ने के कार्यान्वयन। –

उत्तर

26

मैं मैं Python in a Nutshell में क्या लिखा है के द्वारा खड़े (2 संस्करण पी 540।):

मुड़ शामिल शक्तिशाली, उच्च स्तर के इस तरह के वेब सर्वर, उपयोगकर्ता प्रमाणीकरण प्रणाली, मेल सर्वर और ग्राहकों के रूप में घटकों , इंस्टेंट मैसेजिंग, एसएसएच क्लाइंट और सर्वर, एक DNS सर्वर और क्लाइंट, और साथ ही साथ निम्न-स्तरीय आधारभूत संरचना जिस पर ये सभी उच्च स्तरीय घटक निर्मित हैं। प्रत्येक घटक अत्यधिक स्केलेबल और आसानी से अनुकूलन योग्य है, और सभी को को आसानी से इंटरऑपरेट करने के लिए एकीकृत किया गया है। यह पाइथन के की शक्ति और की सरलता के लिए श्रद्धांजलि है, जो कि को दो मेगाबाइट्स डाउनलोड के लायक के भीतर पूरा किया जा सकता है।

पूछ कि क्या यह अविश्वसनीय रूप से अमीर और शक्तिशाली रूपरेखा "सरल उपयोग करने के लिए" "सरल सॉकेट" से है जो पूछेगा कि एक कार है एक पेंच की तुलना में "उपयोग में अधिक आसान" की तरह एक सा है: क्या एक अजीब सवाल!

कारें शिकंजा (अन्य बातों के अलावा) के साथ बनाया हैं, और काफी के रूप में "का उपयोग करने के लिए सरल" नहीं किया जा सकता - सिर्फ इसलिए कि एक पेंच इतने कम करता है, एक कार इतना करता है।

लेकिन यदि आप ए से बी (और संभवतः यात्रियों, सामान, पालतू जानवर, ...) लेना चाहते हैं तो एक स्क्रू बहुत मदद नहीं करेगा (जब तक कि आप मूल रूप से स्क्रैच से कार बनाने जा रहे हैं; -)।

बेशक कारें ए से बी तक पहुंचने का एकमात्र तरीका नहीं है, जैसे कि पाइथन में नेटवर्क-केंद्रित सिस्टम बनाने का एकमात्र तरीका मोड़ नहीं है। एक घोड़ा और छोटी गाड़ी (जैसे asyncore) विचित्र और मजेदार है, हालांकि कम व्यावहारिक; एक हाई-स्पीड ट्रेन (जैसे tornado) का उपयोग करना आसान हो सकता है और कम से कम तेज़, हालांकि बहुत कम लचीला; और विभिन्न विशेष प्रयोजनों के लिए आप paramiko से dnspython तक, साइकिलों से क्रूज जहाजों (जैसे, पायथन और नेटवर्किंग के लिए, अन्य सभी प्रकार के पैकेजों) के सभी प्रकार के अन्य वाहनों को प्राथमिकता दे सकते हैं - उनमें से सभी के हिस्से के रूप में शिकंजा शामिल होंगे उनके घटकों (जैसे, सभी को सॉकेट को उनके द्वारा बनाए जाने के तरीके के रूप में शामिल किया जाएगा), "सरल सॉकेट" के रूप में उपयोग करने के लिए कोई भी आसान नहीं होगा, प्रत्येक (प्रयोज्यता की अपनी सीमा में) आपके लिए बहुत कुछ करेगा संभवतः "सरल सॉकेट" संभवतः हो सकता है।

Twisted बड़ी संख्या में मामलों में एक उत्कृष्ट विकल्प है, अक्सर जब आप कार्यक्षमता के कई पहलुओं को एकीकृत करने की आवश्यकता होती है और/या कुछ प्रोटोकॉल को कार्यान्वित करते हैं जिसके लिए कोई पूरी तरह से पैक किया गया समाधान नहीं है। "सरल सॉकेट" नहीं हैं - वे केवल निम्न स्तर के घटक हैं जिनमें से उच्च कार्यक्षमता, उच्च स्तरीय वाले लोग बनाए जाते हैं, और शायद ही कभी एक अच्छा कारण है (सीखने के अलावा, निश्चित रूप से) "अपना खुद का रोल करें "सॉकेट के शीर्ष पर" स्क्रैच से "उच्च स्तरीय घटकों का निर्माण किया गया है (शक्तिशाली, अच्छी तरह से निर्मित मौजूदा लोगों को चुनने के बजाए) - जैसे कि आप ट्रांजिस्टर, प्रतिरोधक, कैपेसिटर इत्यादि से अपने कंप्यूटर को बनाने में शायद ही कभी उचित ठहरेंगे। उपयुक्त एकीकृत सर्किट चुनने के बजाय ;-)।

+0

ठीक है, मैं बस सीखना चाहता हूं। यही कारण है कि मैंने पूछा: बी मैं कार बनाना सीखना चाहता हूं! : पी – Jake

+1

उम्मीद है कि "संक्षेप में मुड़" है। मुझे "पायथन इन अशेथ" और "पायथन कुकबुक" पुस्तक पसंद है। मैं अभी भी ट्विस्टमैट्रिक्स के साथ कुशलता से कोड नहीं लिख सकता हूं, यहां तक ​​कि मौजूदा ट्विस्टेड बुक और ट्विस्टेड दस्तावेज़ को पढ़ना भी समाप्त कर सकता हूं ... – sunqiang

+0

@ जेक, कार बनाने के लिए सीखना एक अद्भुत प्रयास है। दुर्भाग्य से इसके लिए कोई वास्तव में अच्छी पाठ्यपुस्तक नहीं है (कम से कम पाइथन पर आधारित नहीं), लेकिन आप धीरे-धीरे सॉकेट, टीसीपी/आईपी, उनके ऊपर उच्च स्तरीय प्रोटोकॉल का अध्ययन करके, पाइथन मानक में कुछ प्रोटोकॉल कार्यान्वयन के माध्यम से धीरे-धीरे प्रगति कर सकते हैं लाइब्रेरी (सादा वेनिला, कोई मल्टीटास्किंग), फिर थ्रेडिंग बनाम एसिंक सिस्टम, एसिंककोर, टिक्स्ड (प्रत्येक मामले में, "मैं इसे एक्स एक्स के लिए कैसे उपयोग करूं" के साथ मिश्रण करता हूं "यह आंतरिक रूप से कैसे कार्यान्वित किया जाता है और उन्होंने यह डिज़ाइन निर्णय क्यों लिया")। वास्तव में लंबी यात्रा, लेकिन, आगे बढ़िया सीखना! -) –

4

ट्विस्ट एक समरूपता ढांचा है। यह आपको थ्रेड/प्रक्रियाओं के प्रयोग किए बिना एक ही ऐप्लिकेशन में एकाधिक कार्यों को जोड़ने की अनुमति देता है। यह एक घटना संचालित एसिंक्रोनस सिस्टम का उपयोग करता है और नेटवर्किंग अनुप्रयोगों के साथ विशेष रूप से अच्छा है। असीमित कोड आम तौर पर सामान्य सामान से थोड़ा 'अलग' होता है क्योंकि प्रवाह स्पष्ट नहीं होता है और बाहरी घटनाओं के आधार पर चीजें होती हैं। यह भ्रमित हो सकता है लेकिन यह काम करता है। मुड़कर तर्कसंगत रूप से सबसे परिपक्व पायथन एसिंक कॉन्सुरेंसी लाइब्रेरी है, इसलिए यदि आप यही करने की योजना बना रहे हैं, तो मुड़ने पर एक अच्छी बात है।

"सरल सॉकेट" जैसे ही आप उन्हें रखते हैं संचार प्राथमिकताएं हैं और वास्तव में मुड़ने के लिए तुलनीय नहीं हैं। तुम क्या करने की कोशिश कर रहे हो?

0

ट्विस्ट को पहली बार 2002 में रिलीज़ किया गया था और तब से काफी हद तक फूला हुआ है; (यह एक स्पर्शपूर्ण विषय है और कई लोग तर्क देंगे कि यह एक ढांचे में अच्छा और जरूरी है) - हालांकि परियोजना के करीब आने वाले किसी के लिए यह थोड़ा मुश्किल हो सकता है। विकल्प हैं हालांकि यदि आप एसिंक्रोनस फ्रेमवर्क की तरफ बढ़ रहे हैं। मैंने यह ब्लॉग दिलचस्प पाया: http://nichol.as/asynchronous-servers-in-python। बेंचमार्क एक तरफ, कोड नमूने अकेले तुलना करने के लिए काफी दिलचस्प हैं।

+3

मुड़ना भारी है, मैं सहमत हूं लेकिन फुलाया नहीं। जब आप कुछ ढूंढ रहे हों तो यह बहुत ही मुक्ति महसूस कर रहा है और आप इसे मोड़ के अंदर पाते हैं - पहले ही कार्यान्वित, परीक्षण और जाने के लिए तैयार हैं। –

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