Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions CPU-bound.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# CPU-bound
Генерация 2-х монет.

# Замер скорости генерации на 1-ом ядре:
<img width="1280" alt="image" src="https://user-images.githubusercontent.com/73825639/146382511-cdf20a07-1dfc-4ad9-9a7a-8b28a860ba6a.png">

Время: 508 секунд.
Диспетчер задач:

<img width="584" alt="image" src="https://user-images.githubusercontent.com/73825639/146382439-e0507263-49ea-4fd2-b8bd-991b32d25261.png">

# Замер сторости генерации на 2-х ядрах:
<img width="1280" alt="image" src="https://user-images.githubusercontent.com/73825639/146384750-4f34c1d1-5c25-47c2-bd2c-532065f148b8.png">

Время: 311 секунд.
Диспетчер задач:

<img width="587" alt="image" src="https://user-images.githubusercontent.com/73825639/146384142-437f0aa0-25fb-4cab-81a4-d117dfd28456.png">

# Замер сторости генерации на 4-х ядрах:
<img width="1280" alt="image" src="https://user-images.githubusercontent.com/73825639/146385458-edb2cde3-d4b6-4181-bd97-b481e0c33fea.png">

Время: 127 секунд.
Диспетчер задач:

<img width="583" alt="image" src="https://user-images.githubusercontent.com/73825639/146385205-cd6e565c-0bf3-4a36-b436-00b5197729d6.png">

# Замер сторости генерации на 5-ти ядрах:
<img width="1280" alt="image" src="https://user-images.githubusercontent.com/73825639/146386318-ada85761-939e-43f2-9597-57a67daa4874.png">

Время: 141 секунда.
Диспетчер задач:

<img width="585" alt="image" src="https://user-images.githubusercontent.com/73825639/146385737-91befe67-2a0c-454b-a5e9-35ab3957462f.png">

# Замер сторости генерации на 10-х ядрах:
<img width="1280" alt="image" src="https://user-images.githubusercontent.com/73825639/146387523-cf9b2302-118d-411d-8196-96d92210d82a.png">

Время: 90 секунд.
Диспетчер задач:

<img width="584" alt="image" src="https://user-images.githubusercontent.com/73825639/146386766-e7317605-8a71-4566-aed3-c4773c137038.png">

# Замер сторости генерации на 100 ядрах:
<img width="1280" alt="image" src="https://user-images.githubusercontent.com/73825639/146387716-18e2db4a-3e19-4a6b-b697-bc854562028b.png">

Нельзя запустить на 100 ядрах, поскольку максимально возможно только 61.

# Вывод
При увеличении ядер от 1 до 4 - загруженность на ЦП возрастает, память и диск не изменятся, после 4-х ядер с 5 до 10
заметен скачек, загруженность то увеличивается, то уменьшается.

После 4-х увеличивать количество ядер бесполезно, ведь значения будут рандомными, потому что больше 4-х ядер не существует.


39 changes: 39 additions & 0 deletions CPU-bound.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
from hashlib import md5
from random import choice
import concurrent.futures
from time import time


def is_prime(n):
while True:
s = "".join([choice("0123456789") for i in range(50)])
h = md5(s.encode('utf8')).hexdigest()

if h.endswith("00000"):
return s + ',' + h


def main():
with concurrent.futures.ProcessPoolExecutor(max_workers=100) as executor:
for answer in zip(executor.map(is_prime, range(2))):
print(answer)


if __name__ == '__main__':
time1 = time()
main()
time2 = time()
print(time2 - time1)



#from hashlib import md5
#from random import choice


#while True:
# s = "".join([choice("0123456789") for i in range(50)])
# h = md5(s.encode('utf8')).hexdigest()

# if h.endswith("00000"):
# print(s, h)
37 changes: 37 additions & 0 deletions IO-bound.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# IO-bound
# Измерение времени синхронной проверки:
<img width="1280" alt="image" src="https://user-images.githubusercontent.com/73825639/146364602-678a1602-2d14-4c5c-8818-8f9a14454b09.png">
Время: 2015 секунд.

Диспетчер задач:

<img width="586" alt="image" src="https://user-images.githubusercontent.com/73825639/146372910-b785f881-c201-4a46-8329-e4d3db61b870.png">

# При 5-ти воркетах:
<img width="1280" alt="image" src="https://user-images.githubusercontent.com/73825639/146368913-ae5d5ed6-ca51-4e94-8cbe-d7f52b31ddf5.png">
Время: 531 секунда.

Диспетчер задач:

<img width="526" alt="image" src="https://user-images.githubusercontent.com/73825639/146371784-87379048-17e7-4294-af6e-70200fcd90a5.png">

# При 10-ти воркетах:
<img width="1280" alt="image" src="https://user-images.githubusercontent.com/73825639/146370789-0da4d142-9ff1-4db6-9040-16877bf441ce.png">
Время: 231 секунда.

Диспетчер задач:

<img width="585" alt="image" src="https://user-images.githubusercontent.com/73825639/146370752-5849732a-031c-48ff-81d5-85f2510b6c87.png">

# При 100 воркетах:
<img width="1280" alt="image" src="https://user-images.githubusercontent.com/73825639/146371615-28b1a516-29cd-4df2-a718-89fe54692726.png">
Время: 150 секунд.

Диспетчер задач:

<img width="586" alt="image" src="https://user-images.githubusercontent.com/73825639/146371352-d5349366-ba0c-4ce0-851a-10359233a177.png">

# Вывод:
Можно подвести итог исходя из полученных данных: с учеличением воркетов, время проверки уменьшается,
загрузка памяти изменяется, при измерении времени синхронной проверки и при 5-ти воркетах значения процессора(цп) плюс-минус
одинаково, а при 10-воркетах и при 100-воркетах очень сильно возрастает.
89 changes: 89 additions & 0 deletions IO-bound.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
import concurrent.futures
import urllib.request

URLS = open('res.txt', encoding='utf8').read().split('\n')

# Retrieve a single page and report the URL and contents
def load_url(url, timeout):
with urllib.request.urlopen(url, timeout=timeout) as conn:
return conn.read()


# We can use a with statement to ensure threads are cleaned up promptly
with concurrent.futures.ThreadPoolExecutor(max_workers=100) as executor:
# Start the load operations and mark each future with its URL
future_to_url = {executor.submit(load_url, url, 60): url for url in URLS}
for future in concurrent.futures.as_completed(future_to_url):
url = future_to_url[future]
try:
data = future.result()
except Exception as exc:
print('%r generated an exception: %s' % (url, exc))
else:
print('%r page is %d bytes' % (url, len(data)))



#from urllib.request import Request, urlopen
#from urllib.parse import unquote

#links = open('res.txt', encoding='utf8').read().split('\n')

#for url in links:
# try:
# request = Request(
# url,
# headers={'User-Agent': 'Mozilla/5.0 (Windows NT 9.0; Win65; x64; rv:97.0) Gecko/20105107 Firefox/92.0'},
# )
# resp = urlopen(request, timeout=5)
# code = resp.code
# print(code)
# resp.close()
# except Exception as e:
# print(url, e)



#from urllib.request import urlopen
#from urllib.parse import unquote
#from bs4 import BeautifulSoup
#from tqdm import tqdm

#url = 'https://ru.wikipedia.org/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%A1%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0'

#res = open('res.txt', 'w', encoding='utf8')

#for i in tqdm(range(100)):
# html = urlopen(url).read().decode('utf8')
# soup = BeautifulSoup(html, 'html.parser')
# links = soup.find_all('a')

# for l in links:
# href = l.get('href')
# if href and href.startswith('http') and 'wiki' not in href:
# print(href, file=res)



#from urllib.request import urlopen
#from urllib.parse import unquote
#from bs4 import BeautifulSoup

#url = 'https://ru.wikipedia.org/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%A1%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0'

#for i in range(100):
# s = urlopen(url)
# print(unquote(s.url))

##https://ru.wikipedia.org/wiki/Бурасы
##https://ru.wikipedia.org/wiki/Волшебный_куст
##https://ru.wikipedia.org/wiki/Льюис,_Леннокс
##https://ru.wikipedia.org/wiki/Ильинская_Поповка
##https://ru.wikipedia.org/wiki/Стрельцов,_Василий_Витальевич
##https://ru.wikipedia.org/wiki/Anasimyia
##https://ru.wikipedia.org/wiki/Малая_Осница
##https://ru.wikipedia.org/wiki/Владимиров,_Георгий_Петрович
##https://ru.wikipedia.org/wiki/Bhutan_Today
##https://ru.wikipedia.org/wiki/Польтроньери,_Альберто
##https://ru.wikipedia.org/wiki/Радзивилл,_Мартин_Николай
##https://ru.wikipedia.org/wiki/Эренрайк,_Олден
Loading