multiprocessing(7)
-
Python) multiprocessing 코어 수 제한해서 돌리기
이 글의 목적은 병렬코드를 작성할 때 자기에게 주어진 코어가 제한되어 있는 경우에 대한 팁이 담겨 있는 글이다. 팁을 적기 전에 언제 병렬코드가 필요하고, 또 언제 코어 수를 제한해야 하는 지 생각해 보자. 작업을 하다 보면, loop를 쓰는 경우가 많고, task마다 다르겠지만, 각각의 job은 서로 관련이 없는 경우를 푸는 경우가 있다. 이럴 때 가장 쉽게 생각할 수 있는 것은 병렬로 코드를 짜는 것을 생각한다. 아래 그림처럼 100,000개를 처리할 때 각각의 record끼리 관계가 없다고 하면, 해당 작업을 끝내는 동안 계속 기다려야 한다. 바쁜 우리들은 할 게 많기 때문에 이 시간을 줄이고 싶다는 생각을 하게 되고, 결국 Multi-Processing을 사용하려고 검색을 하게 된다. 아래 그림처..
2023.02.04 -
[ Ray ] 10x Faster Parallel Python Without Python Multiprocessing -리뷰
광고 한 번씩 눌러주세요 블로그 운영에 큰 힘이 됩니다. : ) 파이썬 실력은 부족하지만, 빠르게 돌리기 위해서 병렬 처리에 대해서 관심이 있다. 기존에는 주로 multiprocessing을 많이 해결했는데, 웬만한 거는 쉽게 할 수 있어서 좋았지만, 모델링을 하였을 때, 일단 데이터를 각 프로세스마다 복제해서 커지는 것도 문제고, 데이터의 크기가 크면 안 된다라는 단점을 확인했다. 그러던 중에 ray라는 존재에 대해서는 알게 되었지만, 이러한 문제를 해결해줄 수 있을 것 같아서(추측) 읽어보기로 한다. 개인적으로 쭉 읽고 나서 기존 multiprocessing 보다 많은 장점이 있는 것을 확인하였고, 익숙해지기 위해 노력해야겠다 파이썬 라이브러리 중에서 multiprocessing 가 많은 영역에서 사..
2020.02.20 -
Kafka MultiProcesisng Queue Test
도움이 되셨다면, 광고 한번만 눌러주세요. 블로그 관리에 큰 힘이 됩니다 ^^ ## Producer from time import sleep from json import dumps from kafka import KafkaProducer import numpy as np def on_send_success(record_metadata): print("topic : {} , partition : {} , offset : {}".\ format( record_metadata.topic , record_metadata.partition , record_metadata.offset)) def on_send_error(excp): log.error('I am an errback', exc_info=excp) p..
2019.10.21 -
[ Python ] multiprocessing / concurrent.futures
멀티프로세싱 공부 Queues FIFO(선입선출) 먼저 들어온 놈이 먼저 나간다라고 한다. 안에서 쌓아놨다고 내뱉는 머 그런 느낌! 순서가 중요할 때 안전하게 사용해야 하는 느낌이다. from multiprocessing import Process, Queue import random def rand_num(queue , x): #num = random.random() queue.put(x) if __name__ == "__main__": processes = [Process(target=rand_num, args=(queue,x,)) for x in range(10)] for p in processes: p.start() for p in processes: p.join() results = [queue..
2019.08.18 -
[ Python ] kafka consume multiprocessing 해보기
https://stackoverflow.com/questions/46491616/python-kafka-multiprocess-vs-thread Python Kafka multiprocess vs thread I can use KafkaConsumer to consume messages in separate threads. However, when I use multiprocessing.Process instead of threading.Thread, I get an error: OSError: [Errno 9] Bad file descriptor T... stackoverflow.com 같은 group_id를 가지면서( offset 순차적 ) 같은 토픽에서 정보 가져오기 이렇게 하면 얻는 효과는 더 빨..
2019.08.17 -
multiprocessing으로 pandas replace 하면 더 빠를까?
피드백을 좋아합니다! 머신러닝을 할 때 category 형식은 숫자 형식으로 바꿔줘야 한다. 이럴 때 가장 쉬운 방법은 cat.codes를 사용하면 빠르게 바꿀 수 있다. category["nameDest"].cat.codes 하지만 가끔 이렇게 바꾼 코드를 다시 바꿔서 사용해야 할 때가 있다. 저런 식으로 5개짜리 category랑 2722362 같이 엄청나게 많은 숫자가 나오는 것을 알 수 있다. 실제로 여러가지 multiprocessing으로도 테스트를 해보고 그냥 해본 것도 해보니 결론적으로 그냥 한 개씩 하는 것이 내가 했을 때는 빨랐다... 왜 그럴까?.... ㅠㅠㅠ 암튼 다음과 같이 결과물을 공유하려 한다. 버전 1 partition을 나눠서 했을 경우 column 별로 multiproces..
2019.05.08 -
Ridge, Lasso, ElasticNet / train, test, coef 값 내뱉는 multiprocessing 함수 만들기
피드백은 항상 좋아합니다. https://github.com/sungreong/TIL/blob/master/Machine_Learning/Ridge%20%26%20Lasso%20%26%20Elastic%20Multiprocessing.ipynb 숙제로 제출해야 하는 게 있어서 만들어 봤습니다. 기본적으로 loop로 해야 하는 구조여서 적어도 모델 만들어지는 것은 multiprocessing으로 하려고 했는데 오히려 느리게 됐다는... 3가지 버전을 보여주려고 합니다. 1. Loop , 2, 잘못된 버전 3. 잘된 버전 import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression, Rid..
2019.05.06