Python:
import os, sys, platform
import multiprocessing
import timeit
import threading
from jinja2 import Template
from statistics import median
lock = threading.Lock()
def obliczanie_sumy(liczby):
lock.acquire()
for liczba in liczby:
suma = 0
for i in range(1, liczba + 1):
suma = suma + i
lock.release()
def jeden_watek(liczby):
starttime_1 = timeit.default_timer()
print("The start time is :", starttime_1)
thread_1 = threading.Thread(target=obliczanie_sumy, args=(liczby, ))
thread_1.start()
thread_1.join()
finish_1 = timeit.default_timer() - starttime_1
print("The time difference is :", finish_1)
return round(finish_1, 3)
def cztery_watki(liczby1, liczby2, liczby3, liczby4):
starttime_2 = timeit.default_timer()
print("The start time is :", starttime_2)
threads_2 = [
threading.Thread(target=obliczanie_sumy, args=(liczby1, )),
threading.Thread(target=obliczanie_sumy, args=(liczby2, )),
threading.Thread(target=obliczanie_sumy, args=(liczby3, )),
threading.Thread(target=obliczanie_sumy, args=(liczby4, ))
]
for thread in threads_2:
thread.start()
for thread in threads_2:
thread.join()
finish_2 = timeit.default_timer() - starttime_2
print("The time difference is :", finish_2)
return round(finish_2, 3)
def cztery_procesy(liczby1, liczby2, liczby3, liczby4):
starttime_3 = timeit.default_timer()
print("The start time is :", starttime_3)
processes = [
multiprocessing.Process(target=obliczanie_sumy, args=(liczby1,)),
multiprocessing.Process(target=obliczanie_sumy, args=(liczby2,)),
multiprocessing.Process(target=obliczanie_sumy, args=(liczby3,)),
multiprocessing.Process(target=obliczanie_sumy, args=(liczby4,)),
]
for p in processes:
p.start()
for p in processes:
p.join()
finish_3 = timeit.default_timer() - starttime_3
print("The time difference is :", finish_3)
return round(finish_3, 3)
def osiem_procesow(liczby1, liczby2, liczby3, liczby4, liczby5, liczby6, liczby7, liczby8):
starttime_4 = timeit.default_timer()
print("The start time is :", starttime_4)
processes = [
multiprocessing.Process(target=obliczanie_sumy, args=(liczby1,)),
multiprocessing.Process(target=obliczanie_sumy, args=(liczby2,)),
multiprocessing.Process(target=obliczanie_sumy, args=(liczby3,)),
multiprocessing.Process(target=obliczanie_sumy, args=(liczby4,)),
multiprocessing.Process(target=obliczanie_sumy, args=(liczby5,)),
multiprocessing.Process(target=obliczanie_sumy, args=(liczby6,)),
multiprocessing.Process(target=obliczanie_sumy, args=(liczby7,)),
multiprocessing.Process(target=obliczanie_sumy, args=(liczby8,)),
]
for p in processes:
p.start()
for p in processes:
p.join()
finish_4 = timeit.default_timer() - starttime_4
print("The time difference is :", finish_4)
return round(finish_4, 3)
if __name__ == '__main__':
liczby = [15972490, 80247910, 92031257, 75940266,
97986012, 87599664, 75231321, 11138524,
68870499, 11872796, 79132533, 40649382,
63886074, 53146293, 36914087, 62770938]
liczby1 = [15972490, 80247910, 92031257, 75940266]
liczby2 = [97986012, 87599664, 75231321, 11138524]
liczby3 = [68870499, 11872796, 79132533, 40649382]
liczby4 = [63886074, 53146293, 36914087, 62770938]
dwieliczby1 = [15972490, 80247910]
dwieliczby2 = [92031257, 75940266]
dwieliczby3 = [97986012, 87599664]
dwieliczby4 = [75231321, 11138524]
dwieliczby5 = [68870499, 11872796]
dwieliczby6 = [79132533, 40649382]
dwieliczby7 = [63886074, 53146293]
dwieliczby8 = [36914087, 62770938]
lista_jeden_watek = []
for i in range(1, 6):
lista_jeden_watek.append(jeden_watek(liczby))
lista_cztery_watki = []
for i in range(1, 6):
lista_cztery_watki.append(cztery_watki(liczby1, liczby2, liczby3, liczby4))
lista_cztery_procesy = []
for i in range(1, 6):
lista_cztery_procesy.append(cztery_procesy(liczby1, liczby2, liczby3, liczby4))
lista_osiem_procesow = []
for i in range(1, 6):
lista_osiem_procesow.append(osiem_procesow(dwieliczby1, dwieliczby2, dwieliczby3, dwieliczby4, dwieliczby5,
dwieliczby6, dwieliczby7, dwieliczby8))
можно ли что-то сделать чтоб было более читабельнее и производительнее ?