티스토리 뷰

Programming

callback 함수

제이gnoej 2019. 10. 6. 06:24

파이썬의 asyncio 와 함께 차근차근 설명해주는 callback 함수 

https://mingrammer.com/translation-asynchronous-python/

 

[번역] 비동기 파이썬

Asynchronous Python을 번역한 글입니다. 파이썬에서의 비동기 프로그래밍은 최근 점점 더 많은 인기를 끌고있다. 비동기 프로그래밍을 위한 파이썬 라이브러리는 많다. 그

mingrammer.com

Main takeaways: 

 

"콜백은 함수이며, 이는 “이 작업이 완료되면, 이 함수를 실행시켜줘”라는 의미이다."

=> 흠.. 그렇다면 완료될 때까지는 호출되지 않는다는 말이기도 한건가? 

 

"에러를 발견하는 순간, 호출 스택은 오직 예외를 처리하는 코드가 없는 이벤트 루프와 해당 함수뿐일 것이다. 콜백에서 어떠한 예외라도 발생한다면 이는 이벤트 루프와 프로그램을 빠져나갈 것이다. 따라서 모든 에러들은 예외를 일으키는 대신 객체로서 전달 되어야한다. 이는 만약 당신이 에러 확인하는 걸 깜빡했을 경우, 에러는 묻혀갈 것임을 의미한다. "

 

"더 나은 비동기 프로그래밍을 위해선, 파이썬은 메서드를 부분적으로 실행시키고, 실행을 중단시키고, 그리고 스택 객체와 예외를 전역적으로 관리할 수 있는 방법이 필요할 것이다"

 

 


비동기 프로그래밍에 대해서는 vaisseau 프로젝트 중에 했던 js 를 생각해보면 됨.

 

host server 에 mac address 를 호출하는 메소드가 있었다. 코드상에서는 한번만 호출했는데, 리턴값을 프린트 해보니까 실제 mac address 값이 호출될 때까지 해당함수를 여러번 call 하는 것을 볼 수 있었음.

 

console.log("Mac address: ", mac_address) 를 실행했는데 

 

Mac address: 

Mac address: 

Mac address:

Mac address: 

Mac address: 28:16:34:34:45 

 

이런식으로 프린트 되는 걸 볼 수 있었음. 

 

즉, 비동기일 때는 이벤트 스택 (혹은 작업 스택) 에다가 여러가지 작업을 넣어놓고, 루프를 돌면서 하나씩 작업을 실행시키는데 작업이 완료된 건 바로 바로 스택에서 뺌 - mac address 호출 메소드는 진짜 값이 return 될때까지 계속해서 실행됐음. 조금이라도 지연되는 게 있으면 기다리지 않고 바로 스택에 있는 다음 작업을 호출. 스택에 남아있는 작업이 없어질 때까지 계속 루프를 돌려 실행하는 것을 확인할 수 있었음. 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함