2월, 2020의 게시물 표시

2020.02.18 구글 API 사용시 주의할 점.

먼저 Google CloudPlatform에 프로젝트가 생성되어 있어야 하는데 튜토리얼을 따라가다보면 자동으로 생성이 되어있다. 예를들어 https://developers.google.com/sheets/api/quickstart/nodejs   여기 nodejs 튜토리얼을 그대로 따라해주면 되는데 enable 버튼만 누르면 (Project가 없을 때는) 자동으로 Project가 생겨서 나중에 다시 하려고 하니까 헷갈리는 부분이 있었다. 그 외에는 그냥 튜토리얼을 따라가면 되었다. 토큰 바꾸려다가 뻘짓을 많이 해서 참고차 남긴다.

2020.02.17 Python의 multiprocessing 중 Pool.map(), chunksize에 관한 내용

먼저 동시성에 대한 개념, 쓰레드, 프로세스, 비동기에 대한 내용은 알고 있다고 가정하고 실제 코드 사용법에 대해 적어두었습니다. * Pool.map()  def _map (): pool = multiprocessing.Pool() pool.map(summing , [ 10_000_000 + i for i in range ( 5 )]) pool.close() pool.join() # optional (하단에서 설명) 위에서 볼 수 있듯이 map() 함수는 - Python의 빌트인 함수 map처럼 인자로 실행할 함수, 인자(iterable) 를 취한다. - 프로세스에게 함수와 iterable의 인자를 분배하고 각 프로세스가 그 함수를 처리하도록 한다. 사람 언어로 표현하면 일감을 처리하는 방법과 일감에 필요한 재료를 각 일꾼에게 분배하는 것이라고 생각하면 된다. - pool을 생성하면 최초에 프로세스의 개수를 지정하거나 위 예시처럼 비어있도록 둘 수 있는데 그냥 비어있도록 두는 경우에는 현재 코드가 돌아가는 machine의 CPU core 갯수만큼의 process가 생성된다. * 예시) 3곳의 레스토랑에 전화해서 예약을 하려고 하는데 직원 3명(프로세스 3개)에게 이를 시키는 상황을 코드로 표현하면 아래와 같다. def call_restaurant (phone_num): print ( f'Calling { phone_num } to make a reservation!' ) def make_reservations (): pool = multiprocessing.Pool() pool.map(call_restaurant , [ 1 , 2 , 3 ]) # 전화번호는 귀찮으니 1,2,3이라고 가정했다. pool.close() 1) A에게 (전화해서 식당 예약하기, 전화번호1) 2) B에게 (전화해서 식당 예약하기, 전화번호2) 3)...