¾È³çÇϼ¼¿ä, ÄÚµå Ãʺ¸ÀÚÀÔ´Ï´Ù...
±ÛÀ» ¸î ¹ø ½è´Ù°¡ Áö¿ü´Âµ¥ ÀÚ²Ù ±úÁ®¼...
Áú¹®Àº Á¦¸ñ°ú °°½À´Ï´Ù.
Á¦°¡ Áö±Ý 10°³ ·£´ý°ªÀ» °¡Áø ¿ø¼Ò°¡ µé¾îÀÖ´Â °øÀ¯µÈ ¸®½ºÆ®¿¡¼ 10°³ ÇÁ·Î¼¼½º°¡ Á¤·ÄÇÑ µÚ °¢ ÇÁ·Î¼¼½º¸¶´Ù °É¸®´Â ½Ã°£À» ÃøÁ¤Çؼ Ãâ·ÂÇÏ´Â Äڵ带 Â¥°í ÀÖ½À´Ï´Ù.
±×·±µ¥ ½ÇÇàÇØº¸¸é 1°³´Â µ¹¾Æ°¡´Âµ¥ ³ª¸ÓÁö´Â µ¹¾Æ°¡Áö ¾Ê½À´Ï´Ù...
µ¥µå¶ôÀÌ °É¸° °Í °°½À´Ï´Ù ¤§¤§;
Ȥ½Ã ÇØ°á ¹æ¹ýÀÌ ÀÖÀ»±î¿ä???
´äº¯ÇØÁֽøé Á¤¸» °¨»çÇÕ´Ï´Ù!!!
================================================================
# coding: utf-8
###INITIAL SETTING
import multiprocessing
import random
import time
import timeit
import sys
###SUBPROCESS
def control£¨i, child_conn, sortlock, tcountlock, storelock£©:
while True:
time.sleep£¨random.randrange£¨0,10£©£©
sortlock.acquire£¨£© ##-> ¿©±â¼ Àá°¬½À´Ï´Ù.
#time.sleep£¨random.randrange£¨0,10£©£©
#tcountlock.acquire£¨£©
initlist = child_conn.recv£¨£©
list_length = len£¨initlist£©
start = timeit.default_timer£¨£©
for count in range£¨list_length - 1£©:
for count2 in range£¨list_length - count - 1£©:
if initlist[count2] > initlist[count2 + 1]:
initlist[count2], initlist[count2 + 1] = initlist[count2 + 1], initlist[count2]
end = timeit.default_timer£¨£©
run = end - start
#child_conn.send£¨initlist£©
print£¨'\n[{0}] --> '.format£¨i£©, end=" "£©
for z in initlist:
print£¨z, end=" "£©
print£¨'\t', end = ""£©
print£¨float£¨"{:.8F}".format£¨run£©£©£©
print£¨'#### Process #{0} ended'.format£¨i£©£©
sortlock.release£¨£© ##-> ¿©±â¼ Àá±ÝÀ» Ç®¾ú½À´Ï´Ù.
###THE MAIN FUNCTION
if __name__ == '__main__':
initlist = []
jobs = []
parent_conn, child_conn = multiprocessing.Pipe£¨£©
###INITIALIZE
for x in range£¨0, 10£©:
initlist.append£¨random.randrange£¨0, 100£©£©
print£¨'#### Sorting with List --> ', end= " "£©
for y in initlist:
print£¨'{0}'.format£¨y£©, end=" "£©
print£¨£©
parent_conn.send£¨initlist£©
###LOCK
sortlock = multiprocessing.Lock£¨£©
tcountlock = multiprocessing.Lock£¨£©
storelock = multiprocessing.Lock£¨£©
###MULTIPROCESS START
time.sleep£¨1£©
for x in range£¨0, 10£©:
print£¨'#### Process #{0} started ...'.format£¨x£©£©
process = multiprocessing.Process£¨target=control, args=£¨x, child_conn, sortlock, tcountlock, storelock£©£©
jobs.append£¨process£©
process.start£¨£©
for p in jobs:
p.join£¨£©
================================================================