Ich habe versucht, eines der Beispiele aus diesem page ausführen. Aus irgendeinem Grund funktioniert es nicht, wenn Sie dieses Programm ausführen, wird es zufällige Menge von "Hallo" drucken und danach wird es stecken bleiben. Ich benutze Python 3.6.0, können Sie mir bitte helfen, herauszufinden, was das Problem ist?Python asyncio aus irgendeinem Grund stecken
import asyncio
import aiohttp
import bs4
@asyncio.coroutine
def print_page(url):
response = yield from aiohttp.request('GET', url)
body = yield from response.text()
print(body)
@asyncio.coroutine
def get(*args, **kwargs):
response = yield from aiohttp.request('GET', *args, **kwargs)
return (yield from response.text())
def first_magnet(page):
return "hi"
@asyncio.coroutine
def print_magnet(query):
url = 'http://www.aclweb.org/anthology/J/J{}/'.format(query)
page = yield from get(url, compress=True)
magnet = first_magnet(page)
print('{}: {}'.format(query, magnet))
distros = range(80,90)
loop = asyncio.get_event_loop()
f = asyncio.wait([print_magnet(d) for d in distros])
loop.run_until_complete(f)
'return (yield von response.text())' klingt komisch für mich ... –
Ihr Code funktioniert gut für mich, das Programm kehrt ordnungsgemäß nach dem Drucken '8X: hi' zehnmal zurück. Ziehen Sie auch die Verwendung der Syntax [async/await] (http://asyncio.readthedocs.io/en/latest/hello_world.html#simple-coroutine) in Betracht, wenn Sie python> = 3.5 verwenden. – Vincent