Added pool.map testing

This commit is contained in:
2018-02-16 23:05:05 +01:00
parent 77e4934ba5
commit 9ab6f60f14
+54 -11
View File
@@ -9,16 +9,19 @@
import os import os
import sys import sys
import multiprocessing import multiprocessing as mp
import time import time
import io import io
import cpuinfo import cpuinfo
import queue import queue
import threading import threading
import time import time
import random
import string
import shutil
cpu_info = cpuinfo.get_cpu_info() cpu_info = cpuinfo.get_cpu_info()
num_cores = multiprocessing.cpu_count() num_cores = mp.cpu_count()
print(num_cores) print(num_cores)
filelist = [] filelist = []
@@ -92,15 +95,15 @@ def process_file(data):
except UnicodeDecodeError: except UnicodeDecodeError:
print('got unicode error with %s , trying different encoding' % e) print('got unicode error with %s , trying different encoding' % e)
else: else:
print('opening the file with encoding: %s ' % e) #print('opening the file with encoding: %s ' % e)
break break
print(os.path.basename(data)) #print(os.path.basename(data))
for lines in fh: for lines in fh:
outfile = outfile+lines outfile = outfile+lines
fh.close() fh.close()
outputfile = os.path.splitext(inputfile)[0]+'.inc' outputfile = os.path.splitext(inputfile)[0]+'.inc'
outputfile = str(outputfile).replace(sourcedir, destdir) outputfile = str(outputfile).replace(sourcedir, destdir)
print(outputfile) #print(outputfile)
if not os.path.exists(os.path.dirname(outputfile)): if not os.path.exists(os.path.dirname(outputfile)):
try: try:
os.makedirs(os.path.dirname(outputfile)) os.makedirs(os.path.dirname(outputfile))
@@ -118,7 +121,7 @@ def single_thread():
process_files(sourcedir, destdir) process_files(sourcedir, destdir)
print('Single thread process time: '+str(time.time()-t1)) print('Single thread process time: '+str(time.time()-t1))
def syncronized_thread(): def multi_thread():
global filelist global filelist
global exitFlag global exitFlag
@@ -155,13 +158,53 @@ def syncronized_thread():
print('Files in: '+str(cnt)) print('Files in: '+str(cnt))
print('Multi thread process time: '+str(time.time()-t1)) print('Multi thread process time: '+str(time.time()-t1))
def async_process(num):
t1 = time.time()
cnt = sourcedir_filecnt(sourcedir)
pool = mp.Pool(processes=num)
#[pool.apply_async(process_file, args=(f,)) for f in filelist]
pool.map(process_file, filelist)
#output = [p.get() for p in results]
#print(output)
# Setup a list of processes that we want to run
#processes = [mp.Process(target=rand_string, args=(5, output)) for x in range(8)]
#processes = [mp.Process(target=process_files, args=(sourcedir, destdir)) for x in range(num)]
# Run processes
#for p in processes:
#p.start()
# Exit the completed processes
#for p in processes:
#p.join()
# Get process results from the output queue
#results = [output.get() for p in processes]
#print(results)
print('Files in: '+str(cnt))
print('Multi ('+str(num)+') processes time: '+str(time.time()-t1))
def cleanup(dest):
shutil.rmtree(dest)
#sourcedir = 'C:/Users/dksojlg/Documents/gtk+-3.22.26' #sourcedir = 'C:/Users/dksojlg/Documents/gtk+-3.22.26'
sourcedir = '/usr/include' sourcedir = '/usr/include'
#destdir = 'C:/Users/dksojlg/Documents/include' #destdir = 'C:/Users/dksojlg/Documents/include'
destdir = '/data_2/include' destdir = '/data_2/include'
print(cpu_info) #print(cpu_info)
single_thread() #2543 files - Single thread process time: 1.3732633590698242 sec. #single_thread() #2543 files - Single thread process time: 1.3732633590698242 sec.
#os.rmdir(destdir)
syncronized_thread() #2543 files - Syncronized 5 threads process time: 80.25179100036621 sec. #multi_thread() #2543 files - Syncronized 5 threads process time: 80.25179100036621 sec.
#os.rmdir(destdir)
async_process(16) #2543 files - 2 processes, process time: 1.2379400730133057 sec.
#cleanup(destdir)
#async_process(4) #2543 files - 2 processes, process time: 2.6622860431671143 sec.
#cleanup(destdir)
#async_process(6) #2543 files - 2 processes, process time: 2.6622860431671143 sec.
#cleanup(destdir)
#async_process(8) #2543 files - 2 processes, process time: 2.6622860431671143 sec.
#cleanup(destdir)