私はPython 3.6's async comprehensionsをMacOS Sierra(10.12.2)で使用しようとしていますが、SyntaxError
が届いています。ここで非同期補完の使い方は?
は、私が試したコードです:
print([ i async for i in range(10) ])
print([ i async for i in range(10) if i < 4 ])
[i async for i in range(10) if i % 2]
私はasync loopsの構文エラーが発生します:
result = []
async for i in aiter():
if i % 2:
result.append(i)
すべてのコードPEPからのコピー/ペーストです。
ターミナル出力:予想通り
>>> print([i for i in range(10)])
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print([i async for i in range(10)])
File "<stdin>", line 1
print([i async for i in range(10)])
^
SyntaxError: invalid syntax
>>> print([i async for i in range(10) if i < 4])
File "<stdin>", line 1
print([i async for i in range(10) if i < 4])
^
SyntaxError: invalid syntax
>>>
REPLから 'async def'関数を呼び出し、それが完了するのを待ちますか? – tbodt
@tbodt 6ヶ月前に頼んだことは分かりますが、他の誰かが不思議なことに、REPLで 'asyncio.get_event_loop()。run_until_complete(some_async_function())'を使って同期的に関数を実行することができます。 –