कोई भी पाइथन एसिन्सियो मॉड्यूल के कार्य और कोरआउट के बीच चयन करने के तरीके पर व्यावहारिक सलाह प्रदान कर सकता है?कोरआउट के बजाए एक कार्य का उपयोग कब किया जाना चाहिए?
अगर मैं अतुल्यकालिक रूप से कुछ प्राप्त करने के लिए थे, मैं नीचे 2 में से किसी कर सकता है -
import asyncio
@asyncio.coroutine
def print_hello():
print('Hello')
loop = asycio.get_event_loop()
loop.run_until_complete(print_hello)
loop.close()
या
import asyncio
@asyncio.coroutine
def print_hello():
print('Hello')
print_task = asyncio.ensure_future(print_hello)
loop = asycio.get_event_loop()
loop.run_until_complete(asyncio.wait_for(print_task))
loop.close()
किन कारणों से तय है जो 2 तरीकों में से ऊपर का चयन करने के?
(कृपया टिप्पणी में चीजों का जवाब नहीं है) आम तौर पर आप एक coroutine का प्रयोग करेंगे जब आप इसे सीधे जोड़ी से उपज का उपयोग कर बुला माता पिता coroutine करना चाहते हैं। यह युग्मन बच्चा कोरोटाइन चलाता है और माता-पिता कोरोटाइन को जारी रखने से पहले बच्चे कोरोटाइन लौटने की प्रतीक्षा करता है। दूसरी ओर, एक कार्य, माता-पिता कोरोटाइन द्वारा संचालित नहीं किया जाना चाहिए क्योंकि यह स्वयं ड्राइव कर सकता है। – shongololo
क्या [यह प्रश्न] (http://stackoverflow.com/q/27076577/2073595) आपके प्रश्न का संतोषजनक तरीके से जवाब देता है? मैं इसे एक डुप्ली के रूप में चिह्नित करने के लिए प्रेरित हूं, लेकिन अगर आप अतिरिक्त जानकारी की तलाश में हैं तो मुझे बताएं। – dano
इसके अलावा, 'loop.run_until_complete (coro) 'हमेशा' coro' को' कार्य 'में आंतरिक रूप से परिवर्तित करता है; कार्यक्रम चलाने के लिए आपको कम से कम एक 'कार्य' की आवश्यकता है। – dano