Python Thread
Python Thread (threading, multiprocessing)
none.py
import time
def heavy_work(name):
result = 0
for i in range(4000000):
result += i
print('%s done' % name)
start = time.time()
for i in range(4):
heavy_work(i)
end = time.time()
print("수행시간: %f 초" % (end - start))
0 done
1 done
2 done
3 done
수행시간: 0.600464 초
thread.py
import time
def heavy_work(name):
result = 0
for i in range(4000000):
result += i
print('%s done' % name)
if __name__ == '__main__':
import threading
start = time.time()
threads = []
for i in range(4):
t = threading.Thread(target=heavy_work, args=(i, ))
t.start()
threads.append(t)
for t in threads:
t.join() # 스레드가 종료될 때까지 대기
end = time.time()
print("수행시간: %f 초" % (end - start))
0 done
1 done
2 done
3 done
수행시간: 0.600464 초
multiprocess.py
import time
def heavy_work(name):
result = 0
for i in range(4000000):
result += i
print('%s done' % name)
if __name__ == '__main__':
import multiprocessing
start = time.time()
procs = []
for i in range(4):
p = multiprocessing.Process(target=heavy_work, args=(i, ))
p.start()
procs.append(p)
for p in procs:
p.join() # 프로세스가 모두 종료될 때까지 대기
end = time.time()
print("수행시간: %f 초" % (end - start))
0 done
1 done
2 done
3 done
수행시간: 0.257215 초
multipool.py
import time
def heavy_work(name):
result = 0
for i in range(4000000):
result += i
print('%s done' % name)
if __name__ == '__main__':
import multiprocessing
start = time.time()
pool = multiprocessing.Pool(processes=4)
pool.map(heavy_work, range(4))
pool.close()
pool.join()
end = time.time()
print("수행시간: %f 초" % (end - start))
2 done
0 done
1 done
3 done
수행시간: 0.268522 초
댓글남기기