में थ्रेडपूल का उपयोग कब करें मैंने देखा है कि गेवेन्ट में थ्रेडपूल ऑब्जेक्ट है। कोई मुझे बता सकता है कि थ्रेडपूल का उपयोग कब और नियमित पूल का उपयोग कब किया जाए? Gevent.threadpool और gevent.pool के बीच क्या अंतर है?गीवेंट
गीवेंट
उत्तर
जब आपके पास पाइथन कोड का एक टुकड़ा होता है जो चलाने में लंबा समय लगता है (सेकंड) और हरितलेटों के स्विथिंग का कारण नहीं बनता है। (कोई नेटवर्किंग नहीं) अन्य सभी ग्रीनलेट/गीवेंट नौकरियां 'भूखे' होंगी और आपके पास कोई गणना समय नहीं होगा और यह आपके जैसे एप्लिकेशन 'हैंग' जैसा दिखाई देगा।
यदि आप थ्रेडपूल में यह 'भारी' कार्य डालते हैं, तो थ्रेडेड निष्पादन सुनिश्चित करेगा कि अन्य ग्रीनलेट भूखे नहीं होंगे। लेकिन मेरा मानना है कि यदि आपका कोड सी पुस्तकालय में बहुत समय बिताता है तो इसका कोई प्रभाव नहीं पड़ेगा।
नीचे gevent examples से उदाहरण है। ध्यान दें कि उदाहरण time.sleep का उपयोग करता है जो ब्लॉक करता है और gevent.sleep नहीं।
टिप: आप एक पाश है कि एक लंबे समय से तुम सिर्फ पाश में एक gevent.sleep (0) में डाल सकते हैं चलाने के लिए ले जाता है है। प्रत्येक लूप अन्य ग्रीनलेट्स को चलाने का मौका मिलेगा। gevent .sleep (0) अपनी धीमी गति से पाश में यकीन है कि अन्य greenlets भूखा नहीं होगा कर देगा और अनुप्रयोगों उत्तरदायी प्रकट होता है
import time
import gevent
from gevent.threadpool import ThreadPool
pool = ThreadPool(3)
start = time.time()
for _ in xrange(4):
pool.spawn(time.sleep, 1)
gevent.wait()
delay = time.time() - start
print 'Running "time.sleep(1)" 4 times with 3 threads. Should take about 2 seconds: %.3fs' % delay
- 1. गीवेंट
- 2. गीवेंट उबंटू
- 3. फ्लास्क और गीवेंट
- 4. पिका और गीवेंट
- 5. गीवेंट बंदरगाहिंग ब्रेकिंग मल्टीप्रोसेसिंग
- 6. गीवेंट मल्टीकोर उपयोग
- 7. गीवेंट और टर्ननाडो
- 8. इवेंटलेट बनाम ग्रीनलेट बनाम गीवेंट?
- 9. गीवेंट बंदर-पैचिंग और ब्रेकपॉइंट्स
- 10. गीवेंट-सॉकेटियो सर्वर को कैसे स्केल करें?
- 11. गीवेंट और पॉजिगर्स: असीमित कनेक्शन असफल
- 12. ट्विस्ट, गीवेंट इवेंटलेट - मैं उनका उपयोग कब करूंगा
- 13. गीवेंट के अंदर लॉगिंग का उपयोग कैसे करें?
- 14. क्या गीवेंट + गनिकोर्न स्केलेबल और उत्पादन के उपयोग के लिए स्थिर है?
- 15. गीवेंट पूल के साथ पाइथन स्क्रिप्ट, बहुत सारी मेमोरी का उपभोग करता है,
- 16. गीवेंट में, मैं सभी चल रहे ग्रीनलेट्स के स्टैक निशान कैसे डंप कर सकता हूं?
- 17. गीवेंट: ग्रीनलेट की बड़ी संख्या में वृद्धि करने के लिए नकारात्मक?
- 18. गीवेंट का उपयोग करते समय पायथन में POST चर कैसे प्राप्त करें?
- 19. थ्रेडिंग के साथ गीवेंट बंदर पैचिंग का उपयोग थ्रेड काम को क्रमशः
- 20. पाइथन और एरलांग जैसे किस अभिनेता मॉडल लाइब्रेरी/ढांचे?
- 21. बंदूकें गेवन कार्यकर्ता द्वारा बंदरगाह कौन सी विशेषताएं हैं?
- 22. क्या यह gevent के साथ SQLalchemy का उपयोग सुरक्षित है?
- 23. पायथन 3: gevent और pylibmc/python-memcached
- 24. डीजेगो, अजाक्स लंबे मतदान, पोस्टग्रेस्क्ल: निष्क्रिय लेनदेन
- 25. फाल्कन के साथ गेवेंट्स का उपयोग कैसे करें?
- 26. पीजी बाउंसर Django
- 27. gevent
- 28. redis + gevent - खराब प्रदर्शन - मैं क्या गलत कर रहा हूँ?
- 29. मैं गेवेंट में बहु-उत्पादक, बहु-उपभोक्ता प्रतिमान को कैसे कार्यान्वित कर सकता हूं?
- 30. पीपीपी और पीपीपी + ग्रीनलेट में स्टैकलेस - मतभेद
"लेकिन मेरा मानना है कि अगर आपके कोड एसी पुस्तकालय यह होगा में बहुत समय खर्च करता है कोई प्रभाव नहीं "क्या आप निश्चित हैं? क्या आप सी एक्सटेंशन या 'ctypes' का जिक्र कर रहे हैं? क्योंकि यदि आप जीआईएल (मैन्युअल रूप से सी एक्सटेंशन में या स्वचालित रूप से 'ctypes' के रूप में) जारी करते हैं तो आवेदन थ्रेडपूल से लाभान्वित होगा, है ना? – MariusSiuram
हां। "अगर आप जीआईएल जारी करते हैं" बिल्कुल। मेरे पास यह समझने का समय नहीं है कि प्रत्येक सी libary में से ... – Stephan