Thursday, June 2, 2011

programming python

요즘 보고 있는책. 누구지.. 검색하다가 찾은 블로그 하나 있었는데.. 그 분은 완전 전산 일 하는거 같던데. 그 분이 단계별 추천한 책 중 중급(?)에 속하는 책이였던 걸로 기억한다. 예전에 빠르게 활용하는 python3 프로그래밍인가 하는 책을 한번 훑은적이 있었는데.. 그래서 이 책도 그정도 겠지란 생각에 안볼려가다 결국 본다. 사실 원서라 좀 꺼려지기도 했고.. 워낙 내용도 방대해서 너무 양도 많고.. 근데 결국은 봐야 겠단 생각에 하루에 한 sub-chapter만 읽어보자는 생각으로 읽기 시작했는데. 뭐 몇일 되지도 않았다. 이제 겨우 part 1봤나. sneak preview 라고 하는것 까지 봤다. sneak preview에서는 이 책의 전체적인 내용을 특정 mission을 가지고 간략하게 설명한다. 무슨 내용있는 책인지 알려준다. 음.. 꼭 다 읽어봐야 겠다는 생각이 든다.


책 좋은 거 같음.




<기억해야 할 것>


1.script 상단에 #!를 사용하여 direct하게 executable 하게 만들 때 python path를 적는 것보다 unix의 env를 이용하여 #!/usr/bin/env python이라고 하는게 좀 더 general 하다.
2.os.folk를 쓰지 않고 os.system()에서 실행문 뒤에 &를 붙이게 되면 parallel하게 작업을 수행할 수 있다.
3.spawned process는 모 process에서 환경변수를 상속 받기 때문에 os.environ의 환경변수를  process 간에 communication의 변수로 사용 가능하다. 이 변경된 환경 변수는 top-level process의 상위 레벨에서는 영향을 미치지 않는다. 곧 system shell에는영향이 없다. 
4.for line in open('something') 의 방식을 추천. 원래는 난 readline()을 많이 사용했는데. 같은 의미란다. 차이는 파일을 다읽었을때 return 하는 값. readline은 ''을 iterator는 exception을. 
5. 왜 built-in function인 open의 두번째 argument가 b이냐 아니냐가 unix 계열에서 다르지 않는지 설명한다.
6.built-in open 함수도 있지만 os.open 함수도 있다. 왜 있냐? low-level의 처리가 가능(다양한 mode; O_EXCL을 사용하면 synchronization도 가능).
7.parallel processing 방법으로 process forks 와 spawned thread가 있다. 근데 thread가 platform에 영향을 안받는다.
8.os.execlp를 써서 성공적으로 프로그램을 실행시키면 return이 없다. 거의 program replace라고 생각하면 됨.

No comments:

Post a Comment