Multi processing vs Multi threading
thread들은 같은 메모리를 공유하고 사용하지만 (lock을 사용하는 이유) 프로세스는 프로세스마다 고유의 메모리가 할당됨.
from multiprocessing import Process
def func_simple(length):
sum_simple = 0
for x in range(0, length):
sum_simple += x
print(f"Simple sum is {sum_simple}")
def func_square(length):
square_simple = 0
for x in range(0, length):
square_simple += x * x
print(f"square sum is {square_simple}")
def func_cube(length):
cube_simple = 0
for x in range(0, length):
cube_simple += x * x * x
print(f"cube sum is {cube_simple}")
def do_something():
length = 5
process_simple = Process(target=func_simple, args=(length, ))
process_square = Process(target=func_square, args=(length, ))
process_cube = Process(target=func_cube, args=(length, ))
process_simple.start()
process_square.start()
process_cube.start()
process_simple.join()
process_square.join()
process_cube.join()
do_something()
# Simple sum is 10 (1 + 2 + 3 ... 5)
# square sum is 30 (1 + 4 + 9 ... 25)
# cube sum is 100