Чтобы использовать asyncio, вы должны не просто получить цикл обработки событий, вы также должны запустить его. Вы можете использовать run_until_complete
, чтобы запустить сопрограмму до завершения. Поскольку вам нужно запускать много сопрограмм параллельно, вы можете использовать asyncio.gather
, чтобы объединить их в одну параллельную задачу:
coroutines = []
for coordinate in coordinates:
coroutines.append(loop.run_in_executor(
None, findIntersectingFeatures, coordinate))
intersections = loop.run_until_complete(asyncio.gather(*coroutines))
Кроме того, как я могу выполнить операторы печати после завершения run_in_executor
.
Вы можете await
позвонить на run_in_executor
и поставить свой print
после него:
def find_features(coordinate):
inter = await loop.run_in_executor(None, findInterestingFeatures, coordinate)
print('found', inter)
return inter
# in the for loop, replace coroutines.append(loop.run_in_executor(...))
# with coroutines.append(find_features(coordinate)).