में loop.close asyncio.get_event_loop को कॉल करने के बाद नया इवेंट लूप नहीं बना सकता है, asyncio.get_event_loop() से प्राप्त लूप पर loop.close() को कॉल करने के बाद Python3.6.1 में, एक नया लूप बनाया जा सकता है ?पाइथन 3.6.1
मैंने लूप को ठीक से बंद करने के लिए उत्तर के साथ अन्य पोस्टों को देखा है, और task.cancel() का उपयोग कैसे करें, लेकिन उन उदाहरणों में से किसी एक का उपयोग करने में सक्षम नहीं है जो एक नया पाश देगा पहले बंद होने के बाद बनाया जाना चाहिए। मैंने निष्पादक को स्पष्ट रूप से सेट करने और बाद में निष्पादक को कॉल करने का प्रयास किया। शटडाउन (प्रतीक्षा = सही), लेकिन इससे मदद नहीं मिली। मैंने 'डेल लूप' भी कोशिश की, और डेल अन्य चीजों का एक गुच्छा।
दस्तावेज़ीकरण इंगित करता है कि एक इवेंट लूप बंद करना बेवकूफ और अपरिवर्तनीय है। क्या इसका यह भी अर्थ है कि एक नया पाश नहीं बनाया जा सकता है? ``
#!/usr/bin/env python3.6
'''
To demonstrate an issue, the following code was adapted from:
https://docs.python.org/3/library/asyncio-eventloop.html
'''
import asyncio
def hello_world(loop):
print('Hello World')
loop.stop()
loop = asyncio.get_event_loop()
loop.call_soon(hello_world, loop)
loop.run_forever()
# loop.close()
'''
If the commented out loop.close() above is uncommented,
the following code will fail with:
Traceback (most recent call last):
File "./aquestion.py", line 28, in <module>
loopNew.call_soon(hello_world, loopNew)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib /python3.6/asyncio/base_events.py", line 573, in call_soon
self._check_closed()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/base_events.py", line 357, in _check_closed
raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
'''
loopNew = asyncio.get_event_loop()
loopNew.call_soon(hello_world, loopNew)
loopNew.run_forever()
मेरे सवाल का जवाब करने के लिए कोई भी प्रयास की सराहना की जाएगी:
यहाँ मुद्दा प्रदर्शित करने के लिए कुछ सरल उदाहरण कोड है।
वैकल्पिक रूप से, क्या यह एक ईवेंट लूप बनाने के लिए खराब फॉर्म होगा, इसे विभिन्न उद्देश्यों के लिए उपयोग करें, और फिर उस लूप को बंद करें जब लंबे समय तक चलने वाला प्रोग्राम बाहर निकलने वाला है? यह सिर्फ गलत लगता है।
बहुत बहुत धन्यवाद !!! यह बहुत अच्छा काम किया। मैंने पहले new_event_loop की कोशिश की थी, लेकिन मैंने उस प्रयोग के दौरान कुछ गलत किया होगा। –
मैंने 'set_event_loop' का उल्लेख करने की उपेक्षा की। यह आपके द्वारा चलाई गई समस्याओं से संबंधित हो सकता है। मैंने इसे शामिल करने के लिए उत्तर अपडेट किया है। – dirn