Python 3.10
Byl jsem pověřen prokazující můžu max CPU svůj Mac notebook (10 jader), tím, že volá místní API endpoint, který běží na Java VM, stejně jako "měření a záznam propustnost," to vše pomocí Python. Pro paralelizaci, které jsem zkoumal, a rozhodl se jít s asyncio
na tuto odpověď: https://stackoverflow.com/a/59385935/7191927
Mám v plánu použít htop
ukázat všechny jádra na maximu tak, že část si myslím, že mám na které se vztahuje. Kde jsem nějakej průšvih je, co vlastně je třeba udělat v kódu max CPU.
To je to, co mám tak daleko. Tento kód je zavolat dva místní API koncových bodů (což každý jen proces bloky textu a extrahovat relevantní podmínky):
import asyncio
from api import API, DocumentParameters, EndException
def background(f):
def wrapped(*args, **kwargs):
return asyncio.get_event_loop().run_in_executor(None, f, *args, **kwargs)
return wrapped
@background
def get_word_results(data):
api = API(url='http://localhost:8181/rest/words')
words_data = data
params = DocumentParameters()
params["content"] = words_data
try:
result = api.words(params)
except EndException as exception:
print(exception)
return result
@background
def get_language_results(data):
api = API(url='http://localhost:8181/rest/languages')
language_data = data
params = DocumentParameters()
params["content"] = language_text_data
try:
result = api.language(params)
except EndException as exception:
print(exception)
return result
if __name__ == '__main__':
filepath = "/Users/me/stuff.txt"
with open(filepath, 'r') as file:
data = file.read()
get_word_results(data)
get_language_results(data)
print('Done.')
To je místo, kde má Python znalosti/zkušenosti začíná ubývat.
Takže to, co by bylo nejvíce efektivní způsob, jak:
- Spustit tento kód neustále a na zvyšující se počty vláken ve snaze max CPU.
- Změřte a zaznamenejte propustnost, dle požadavku.
EDIT 1 - Bounty začal. Potřebuju solidní řešení pro tento - který maxes CPU a dává nějaký výstup, který ukazuje, že to, stejně jako, jak mnoho volání jsou vyrobeny a působit max. Na základě toho, co Pan Miyagi říká v komentářích, to zní, jako multiprocessing
je to, co chci, a to buď místo, nebo v tandemu s asyncio
Vítěz bude dosaženo s nejnižšími množství řádků kódu.
EDIT 2 - to musí být provedeno pomocí pomocí jednoho skriptu/programu, je spuštěn jednou, spíše než běží stejný scénář několikrát.