728x90 ๐ป Programming/Python14 [python] ํ์ด์ฌ ๋ณ๋ ฌ ์ฒ๋ฆฌ | joblib ์ฌ์ฉ๋ฒ | ๋ฉํฐํ๋ก์ธ์ฑ | ๋ฉํฐ์ฐ๋ ๋ฉ joblib์ ํ์ด์ฌ์์ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ๊ฐํธํ๊ฒ ์ํํ ์ ์๋๋ก ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. Parallel ํด๋์ค Parallel ํด๋์ค๋ ๋ณ๋ ฌ๋ก ํจ์๋ฅผ ์คํํ๊ฑฐ๋ ๋ฐ๋ณต ๊ฐ๋ฅํ ์์ ์ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉ - n_jobs n_jobs ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๋์์ ์คํํ ์์ ์ ์๋ฅผ ์กฐ์ ํ ์ ์์ผ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก CPU์ ์ฝ์ด ์๋ฅผ ์ฌ์ฉํ๋ฉด ํจ๊ณผ์ ์ด๋ค. n_jobs=-1์ ์์คํ ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ์ฝ์ด๋ฅผ ํ์ฉํ์ฌ ์ต๋ํ ๋ณ๋ ฌ๋ก ์คํํ๋ผ๋ ์๋ฏธ - backend ๋ฐฑ์๋๋ ์ด๋ป๊ฒ ๋ณ๋ ฌ ์์ ์ ์ฒ๋ฆฌํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ ํต์ฌ ์ญํ ์ ํ๋ฉฐ, loky ๋ฐฑ์๋๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ๋๋ค. loky (๊ธฐ๋ณธ ๋ฐฑ์๋) loky๋ ํ์ด์ฌ์ concurrent.futures๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋ฐฑ์๋๋ก, ๋ฉํฐํ๋ก์ธ์ฑ์ ํ์ฉ ํ๋ก์ธ์ค ํ๋ง์ ํตํด ํจ.. 2024. 1. 19. [python] ๋ฉํฐํ๋ก์ธ์ฑ Process ์ฌ์ฉ๋ฒ ๋ฐ ์ฝ๋ ์์ | multiprocessing.Process | ์ฌ๋ฌ ํ๋ก์ธ์ค์ ์๋ก ๋ค๋ฅธ ์์ ์ ํ ๋น [python] ๋ฉํฐํ๋ก์ธ์ฑ Pool ์ฌ์ฉ๋ฒ ๋ฐ ์ฝ๋ ์์ | multiprocessing.Pool | python ์๋ ํฅ์ ๋ฉํฐํ๋ก์ธ์ฑ์ ์ฌ๋ฌ ๊ฐ์ ๋ ๋ฆฝ์ ์ธ ํ๋ก์ธ์ค๋ฅผ ์์ฑํ์ฌ ๊ฐ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๋ณ๋ ฌ๋ก ์์ ํ๋๋ก ํ๋ ๋ฐฉ์์ด๋ค. ๊ฐ ํ๋ก์ธ์ค๋ ๋ ๋ฆฝ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ์ง๋ฉฐ, ํ๋ก์ธ์ค ๊ฐ ํต์ (Inter-Process Co mvje.tistory.com ์ ํฌ์คํ ์์ ํ์ด์ฌ์ผ๋ก ๋ฉํฐํ๋ก์ธ์ฑ์ ์ฌ์ฉํ๊ธฐ ์ํด multiprocessing.Pool ์ฌ์ฉ๋ฒ์ ๋ํด ์ดํด๋ดค๋ค. ์ด๋ฒ์๋ multiprocessing.Process๋ฅผ ํ์ฉํ ๋ฉํฐํ๋ก์ธ์ฑ ๋ฐฉ๋ฒ๊ณผ Pool, Process ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ฐจ์ด์ ์ ๋ํด ์์๋ณด๊ณ ์ ํ๋ค. multiprocessing.Pool๊ณผ multiprocessing.Process๋.. 2024. 1. 7. [python] ๋ฉํฐํ๋ก์ธ์ฑ Pool ์ฌ์ฉ๋ฒ ๋ฐ ์ฝ๋ ์์ | multiprocessing.Pool | python ์๋ ํฅ์ ๋ฉํฐํ๋ก์ธ์ฑ์ ์ฌ๋ฌ ๊ฐ์ ๋ ๋ฆฝ์ ์ธ ํ๋ก์ธ์ค๋ฅผ ์์ฑํ์ฌ ๊ฐ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๋ณ๋ ฌ๋ก ์์ ํ๋๋ก ํ๋ ๋ฐฉ์์ด๋ค. ๊ฐ ํ๋ก์ธ์ค๋ ๋ ๋ฆฝ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ์ง๋ฉฐ, ํ๋ก์ธ์ค ๊ฐ ํต์ (Inter-Process Communication, IPC) ๋ฉ์ปค๋์ฆ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ์ ์๋ค. ํ์ด์ฌ์์ ๋ฉํฐํ๋ก์ธ์ฑ์ ๊ตฌํํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ฃผ์ ๋ชจ๋์ multiprocessing์ด๋ค. multiprocessing ๋ชจ๋์ ํ์ด์ฌ์์ ๋ค์ค ํ๋ก์ธ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๋ ฌ ์์ ์ ์ํํ๋ ๋ฐ ๋์์ด ๋๋ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋๋ฐ, threading ๋ชจ๋๊ณผ ๋ฌ๋ฆฌ Global Interpreter Lock (GIL)์ ์ํฅ์ ๋ฐ์ง ์์ผ๋ฏ๋ก CPU-bound ์์ ์ ํจ๊ณผ์ ์ด๋ค. multiprocessing.Pool multiprocessing.P.. 2024. 1. 7. [pandas] ํน์ ์ปฌ๋ผ์์ ํน์ ๋ฌธ์์ด์ด ํฌํจ๋ ํ ์ฐพ๊ธฐ | str.contains ํ๋ค์ค์์๋ ํน์ ์ปฌ๋ผ์์ ํน์ ๋ฌธ์์ด์ด ํฌํจ๋ ํ์ ์ฐพ์ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ํด์๋ ํด๋น ์ปฌ๋ผ์ ๋ฌธ์์ด์ ๋ํด str.contains() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. str.contains() ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ contains_apple = df[df['์ปฌ๋ผ A'].str.contains('๊ฐ๋๋ค๋ผ')] "์ปฌ๋ผ A"์์ "๊ฐ๋๋ค๋ผ"๊ฐ ํฌํจ๋ ํ์ ์ฐพ๊ธฐ ์ํด์๋ ์์ ๊ฐ์ด ์ฌ์ฉํ๋ฉด ๋๋ค. ์ ๊ท ํํ์ ์ฌ์ฉ contains_pattern = df[df['A'].str.contains('์ฌ๊ณผ|๋ฐ๋๋', regex=True)] regex=True ๋ก ์ค์ ํ์ฌ ์ ๊ท ํํ์์ ์ฌ์ฉํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ํน์ ํจํด์ด๋ ๋ฌธ์์ด์ ์ ๊ท ํํ์์ผ๋ก ์ง์ ํ์ฌ ๊ฒ์ํ ์ ์๋ค. ์ ์์๋ '์ฌ๊ณผ' ๋๋ '๋ฐ๋๋'๊ฐ ํฌํจ๋.. 2023. 11. 17. [pandas] ํน์ ์ปฌ๋ผ์ ๊ฐ์ด ๊ณต๋ฐฑ์ธ ํ์ ์ ์ธํ๋ ๋ฐฉ๋ฒ | dropna ํ๋ค์ค์ ๋ฐ์ดํฐํ๋ ์์์ ํน์ ์ปฌ๋ผ์ ๊ฐ์ด ๊ณต๋ฐฑ(๋๋ ๋น ๋ฌธ์์ด)์ธ ํ์ ์ ์ธํ๊ณ ์ถ์ ๋ ์ด๋ป๊ฒ ํ๋ฉด ๋๋์ง ์์๋ณด์. ํน์ ์ปฌ๋ผ์ ๊ณต๋ฐฑ์ธ ํ ์ ๊ฑฐ import pandas as pd # ์ํ ๋ฐ์ดํฐํ๋ ์ ์์ฑ data = {'A': [1, 2, 3, 4], 'B': ['apple', 'banana', '', 'orange']} df = pd.DataFrame(data) # 'B' ์ปฌ๋ผ์ ๊ฐ์ด ๊ณต๋ฐฑ์ธ ํ ์ ์ธ df_no_empty_values = df[df['B'].str.strip() != ''] # ๊ฒฐ๊ณผ ์ถ๋ ฅ print(df_no_empty_values) ์ ์ฝ๋์์ df['B'].str.strip() != '' ๋ถ๋ถ์ 'B' ์ปฌ๋ผ์ ๊ฐ ๊ฐ์ ๋ํด ์ข์ฐ์ ๊ณต๋ฐฑ์ ์ ๊ฑฐํ๊ณ ๋น ๋ฌธ์์ด๊ณผ ๋น๊ตํ์ฌ ๊ณต๋ฐฑ์ธ.. 2023. 11. 17. [pandas] ํน์ ์ปฌ๋ผ์์ ์ค๋ณต๋ ๊ฐ ์ ๊ฑฐ | drop_duplicates ํ๋ค์ค ๋ฐ์ดํฐํ๋ ์์์ ๊ฐํน ํน์ ์ปฌ๋ผ์ ์ค๋ณต๋ ๊ฐ์ ์ ๊ฑฐํ๊ณ ์ถ์ ๊ฒฝ์ฐ๊ฐ ์๋ค. ๋ง์ฝ ์ค๋ณต๋ ๊ฐ์ ๊ฐ์ง ํ ์ค ์ฒ์ ๋ฑ์ฅํ๋ ํ์ ์ ์ธํ๊ณ ๋๋จธ์ง ์ค๋ณต๋ ํ์ ๋ชจ๋ ์ ๊ฑฐํ๊ณ ์ถ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค. import pandas as pd # ์ํ ๋ฐ์ดํฐํ๋ ์ ์์ฑ data = {'column_name': [1, 2, 3, 1, 2, 4]} df = pd.DataFrame(data) # ์ค๋ณต๋ ๊ฐ์ ๊ฐ์ง ํ ์ค ์ฒ์ ๋ฑ์ฅํ๋ ํ์ ์ ์ธํ๊ณ ๋๋จธ์ง ์ค๋ณต๋ ํ ์ ๊ฑฐ df_no_duplicates = df.drop_duplicates(subset='column_name', keep='first') # ๊ฒฐ๊ณผ ์ถ๋ ฅ print(df_no_duplicates) # ํ ๊ฐ์ ๋น๊ต print(len(df.. 2023. 11. 17. ์ด์ 1 2 3 ๋ค์ 728x90