통계 위젯 (화이트)

221495
8881
2514299

저작권

Do not be afraid to fail. Be afraid not to try. Pain is temporary, suck is forever. Keep it small and simple.

카카오 광고







파이썬 코드를 웹브라우저에서 실행시켜 보기 by 미친병아리

설마 했는데 있긴 있네요. - https://github.com/pyodide/pyodide
Pyodide : Python with the scientific stack, compiled to WebAssembly.
Pyodide may be used in any context where you want to run Python inside a web browser.

파이썬 인터프리터를 웹 어셈블리로 컴파일해서 웹브라우저 안에서 돌아가게 만들었습니다. 연결고리는 자바스크립트를 사용합니다.
어마어마 하네요. 헌데, 속도가 예상보다 빠릅니다. 물론, 그냥 실행한 것 보다는 느립니다. 안 그래도 파이썬 느리다고 불만들 많은데 아무리 웹 어셈블리로 되어 있다고 하더라도 웹 브라우저 안에서 돌려면 느릴 수 밖에 없습니다.
<!DOCTYPE html><html>  <head>      <script src="https://cdn.jsdelivr.net/pyodide/v0.18.1/full/pyodide.js"></script>  </head>  <body>    Pyodide test page <br>    Open your browser console to see Pyodide output    <script type="text/javascript">      async function main(){        let pyodide = await loadPyodide({          indexURL : "https://cdn.jsdelivr.net/pyodide/v0.18.1/full/"        });        console.log(pyodide.runPython(`            import sys            sys.version        `));        console.log(pyodide.runPython("print(1 + 2)"));      }      main();    </script>  </body></html>

파이썬의 장점은 엄청난 패키지에 있습니다. 내가 필요한건 이미 누군가 다 파이썬 패키지로 만들어 놨으니까요.
헌데, 이걸 pyodide에서 사용하려면 이걸 다시 웹 어셈블리로 컴파일 해야 합니다. 안타깝게도 대부분 웹 어셈블리로 만들어져 있지 않습니다.
기본적인 패키지들은 이미 많이 만들어 놓긴 했습니다. 아래와 같이 사용할 수 있습니다.
<html>  <head>    <meta charset="utf-8" />  </head>  <body>    <script      type="text/javascript"      src="https://cdn.jsdelivr.net/pyodide/v0.18.1/full/pyodide.js"    ></script>    <script type="text/javascript">      async function main() {        let pyodide = await loadPyodide({          indexURL: "https://cdn.jsdelivr.net/pyodide/v0.18.1/full/",        });        await pyodide.loadPackage("micropip");        await pyodide.runPythonAsync(`        import micropip        await micropip.install('snowballstemmer')        import snowballstemmer        stemmer = snowballstemmer.stemmer('english')        print(stemmer.stemWords('go goes going gone'.split()))      `);      }      main();    </script>  </body></html>

물론, 내가 직접 만들어도 되긴 합니다. - https://pyodide.org/en/stable/development/new-packages.html
아, 근데 언제 다 만들고 있습니까. 남들이 만들어 놓기를 좀 기다려 봐야죠.



그래도 웹 브라우저 안에서 파이썬 코드를 네이티브 속도에 가깝게 돌릴 수 있다는 건 놀랍습니다.

하지만, 꼭 파이썬 코드를 웹브라우저 안에서 사용할 일이 아직은 없어서 언제 써먹을 수 있을지는 아직은 모르겠습니다. 그래도 이미 작성된 파이썬 코드를 활용할 수 있으니, 패키지들만 웹어셈블리로 부지런히 포팅되면 웹 브라우저 안에서 재미난 파이썬 코드들을 편하게 돌려볼 수 있을 것 같습니다.
결과물은 웹브라우저 안에 뿌리고요.



자바스크립트와 웹브라우저의 발전은 정말 나날이 놀라운 결과물을 만들어내는 토양이 되고 있습니다.

PWA와 웹 어셈블리가 좀 더 발전하고 활성화 되면
언젠가 구글의 꿈인, 크롬이 OS인 PC 세상이 정말로 올지도 모르겠습니다.



2021.09.26 추가
이글루스에서는 소스코드를 글 내용에 넣는게 너무 힘드네요. ㅠㅠ
징징거린다고 이글루스에서 만들어 줄 것 같지는 않으니 방법을 찾아봐야 겠습니다. 다른 분들은 소스코드를 어떻게 글 본문에 넣는지 함 둘러봐야겠습니다.



2021.10.19 추가

네, 결국엔 이글루스 블로그 이름 바꾸고, 결국 티스토리로 옮겼습니다.
앞으로 티스토리와 네이버, 두개를 사용하게 될 것 같습니다. 이글루스에 글을 아예 안올리지는 않겠지만, 아무래도 좀 뜸하게 될 것 같습니다.

역시나 티스토리는 소스코드 올리는 것도 이쁘게 컬러링 되는 플러그인이 이미 준비되어 있더군요.



2021.10.24 추가
유료, 무료 온라인 강의 사이트 정리해 봤습니다. - https://madchick.tistory.com/66
본인에게 가장 잘 맞는 온라인 강의 플랫폼을 찾아 즐겁게 자기계발 진행해 보아요.


[에버키] Atlas S15 아틀라스 S15 EKP121S15, 본상품선택 BOSE QC35 II 2세대 노이즈 캔슬링 헤드폰, 블랙, QuietComfort 35 II Apple 2020년 맥북 프로 13 (M1 칩셋 8코어 CPU 8코어 GPU), 8GB, SSD 256GB, 스페이스 그레이 키크론 K6 무선 기계식키보드 WHITE LED 핫스왑 갈축, 혼합색상 마이크로소프트 모바일 마우스 KGY-00060, 포피레드 한성컴퓨터 39.62cm FHD DEX 포터블 HDR 멀티터치 휴대용 모니터, TFX156T
쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받을 수 있습니다.

카카오 광고