파이썬에서 문자열을 더하거나 숫자를 곱하는 등의 코딩을 할 때 아래와 같이 연산자를 사용하게 됩니다.

result = 'a' + 'b'
result2 = 4 * 5

여기서 파이썬 내부적으로 operator 모듈을 호출하여 처리를 한 다음 사용자에게 반환하게 됩니다. 


만약 속도가 정말 중요한 프로그램에서 연산처리를 조금이나마 빠르게 하려면 operator 모듈을 사용하면 됩니다.


아래는 100만번 반복문을 실행하면서 각 값을 곱하는 예제로 수행속도를 확인한 코드입니다.

from functools import reduce
import operator
import timeit


def test1():
    return reduce(operator.mul, range(1000000))

def test2():
    return reduce(lambda x,y: x*y, range(1000000))

def test3():
    def xy(x, y):
        return x*y
    return reduce(xy, range(1000000))

def xy2(x, y):
    return x*y
def test4():
    return reduce(xy2, range(1000000))

t1 = timeit.timeit('test1()', setup='from __main__ import test1', number=1)
t2 = timeit.timeit('test2()', setup='from __main__ import test2', number=1)
t3 = timeit.timeit('test3()', setup='from __main__ import test3', number=1)
t4 = timeit.timeit('test4()', setup='from __main__ import test4, xy2', number=1)

print(t1)
print(t2)
print(t3)
print(t4)


# 0.07717441299610073
# 0.1284205199990538
# 0.12985249999474036
# 0.1294196250019013


결과를 보면 operator 모듈의 mul을 사용해 100만번 곱한 결과가 약 60%정도 빠른 것으로 보여집니다. 

요약

속도 처리가 아주 중요한 프로그램일 경우, 연산 로직을 짤 때, operator 모듈을 사용하자

+ Random Posts