python 에서 Task 패키지 협회 의 지식 점 총화
1.Task 는 Future 의 하위 클래스 입 니 다.Task 는 협 정 된 패키지 입 니 다.우 리 는 여러 개의 Task 를 순환 스케줄 링 목록 에 놓 고 스케줄 링 이 실 행 될 때 까지 기 다 립 니 다.
2.Task 대상 은 퀘 스 트 와 상 태 를 추적 할 수 있 습 니 다.Future(Task 는 Futrue 의 하위 클래스)는 비동기 프로 그래 밍 에서 최종 결 과 를 처리 합 니 다(Task 류 는 상태 처리 기능 도 가지 고 있 습 니 다).
3.협 정 을 Task 로 밀봉 하고 한 대열 에 가입 하여 호출 을 기다 리 고 있 습 니 다.Task 를 만 들 때 실행 하지 않 고 await 를 만나면 실행 합 니 다.
실례
import asyncio
async def func():
print(1)
await asyncio.sleep(2)
print(2)
return " "
async def main():
print("main ")
# , Task , ( )。
#
task_list = [
asyncio.create_task(func(), name="n1"),
asyncio.create_task(func(), name="n2")
]
print("main ")
# IO , 。
# await , done
# timeout , , done , pending 。
done, pending = await asyncio.wait(task_list, timeout=None)
print(done, pending)
asyncio.run(main())
지식 포인트 확장:Task 개념 및 용법
메모:Python 3.7 이후 버 전 지원 asyncio.createtask(),이전 문법 은 loop.createtask(),개발 과정 에서 코드 작성 법 이 서로 다른 버 전의 python 에 대한 호환성 에 주의해 야 합 니 다.
4.567917.일반적으로 개발 에서 자주 사용 하 는 문법 은 다음 과 같다.
--task 먼저 만 들 기목록 빈 목록;
--그리고 asyncio.createtask()작업 만 들 기;
--Task 대상 을 task 에 추가list;
--마지막 으로 await asyncio.wait 또는 await asyncio.gather 를 사용 하여 작업 대상 을 이벤트 순환 에 추가 하여 비동기 로 실행 합 니 다.
메모:작업 대상 을 만 들 때 asyncio.create 를 사용 할 수 있 습 니 다.task()외 에 도 최저 등급 의 loop.create 를 사용 할 수 있 습 니 다.task()또는 asyncio.ensurefuture(),그들 은 모두 Task 대상 을 만 드 는 데 사용 할 수 있 습 니 다.그 중에서 ensurefuture 관련 내용 은 다음 에 같이 말씀 드 리 겠 습 니 다.
Task 용법 코드 예제:
import asyncio
import arrow
def current_time():
'''
:return:
'''
cur_time = arrow.now().to('Asia/Shanghai').format('YYYY-MM-DD HH:mm:ss')
return cur_time
async def func(sleep_time):
func_name_suffix = sleep_time # sleep_time( I/O ) ,
print(f"[{current_time()}] {func.__name__}-{func_name_suffix}")
await asyncio.sleep(sleep_time)
print(f"[{current_time()}] {func.__name__}-{func_name_suffix} ")
return f"【[{current_time()}] {func.__name__}-{func_name_suffix} 】"
async def run():
task_list = []
for i in range(5):
task = asyncio.create_task(async_func(i))
task_list.append(task)
done, pending = await asyncio.wait(task_list, timeout=None)
for done_task in done:
print((f"[{current_time()}] {done_task.result()}"))
def main():
loop = asyncio.get_event_loop()
loop.run_until_complete(run())
if __name__ == '__main__':
main()
python 에서 Task 패 키 징 협 정 에 관 한 지식 을 정리 한 이 글 은 여기까지 입 니 다.더 많은 관련 python 에서 Task 패 키 징 협 정 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.