2017-08-09 17 views
6

समाप्त होती है जब asyncio हैलो दुनिया कोड डॉक्स में दिए गए उदाहरण चलाने का प्रयास:Asyncio घटना लूप

import asyncio 

async def hello_world(): 
    print("Hello World!") 

loop = asyncio.get_event_loop() 
# Blocking call which returns when the hello_world() coroutine is done 
loop.run_until_complete(hello_world()) 
loop.close() 

मैं त्रुटि मिलती है:

RuntimeError: Event loop is closed 

मैं अजगर 3.5.3 का उपयोग कर रहा हूँ।

उत्तर

12

आप पहले से ही loop.close() कहा जाता है इससे पहले कि आप कोड की है कि नमूने टुकड़ा भाग गया, वैश्विक घटना पाश पर:

>>> import asyncio 
>>> asyncio.get_event_loop().close() 
>>> asyncio.get_event_loop().is_closed() 
True 
>>> asyncio.get_event_loop().run_until_complete(asyncio.sleep(1)) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/.../lib/python3.6/asyncio/base_events.py", line 443, in run_until_complete 
    self._check_closed() 
    File "/.../lib/python3.6/asyncio/base_events.py", line 357, in _check_closed 
    raise RuntimeError('Event loop is closed') 
RuntimeError: Event loop is closed 

आप एक नई पाश बनाने की जरूरत:

loop = asyncio.new_event_loop() 

आप कर सकते हैं सेट करें कि नए ग्लोबल लूप के साथ:

asyncio.set_event_loop(asyncio.new_event_loop()) 

और उसके बाद बस asyncio.get_event_loop() का उपयोग करें।

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

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