import asyncio
async def main():
lock = asyncio.Lock()
print("Sky")
async with lock:
print("Ground")
async with lock:
print("Hell")
asyncio.run(main())
Висит вечно, потом Ctrl+C:
% python3 test.py
Sky
Ground
^CTraceback (most recent call last):
File "test.py", line 11, in <module>
asyncio.run(main())
File "/usr/lib/python3.7/asyncio/runners.py", line 43, in run
return loop.run_until_complete(main)
File "/usr/lib/python3.7/asyncio/base_events.py", line 566, in run_until_complete
self.run_forever()
File "/usr/lib/python3.7/asyncio/base_events.py", line 534, in run_forever
self._run_once()
File "/usr/lib/python3.7/asyncio/base_events.py", line 1735, in _run_once
event_list = self._selector.select(timeout)
File "/usr/lib/python3.7/selectors.py", line 468, in select
fd_event_list = self._selector.poll(timeout, max_ev)
KeyboardInterrupt
https://github.com/python/asyncio/issues/439
В яве такой хрени не встретишь. Но ява старенькая же, а тут новомодная асинхронность, зелёные до тошноты потоки и всё такое. Самое весёлое, что эта зараза даже ошибок не выбрасывает, и отладить такое «зависание» не очень просто.