Domanda Risolto Python per grandissima quantità di dati e di calcolo?

donatox7

Utente Iron
19 Luglio 2020
26
5
0
17
Ciao ragazzi. In riferimento a questo mio post nella sezione web (in cui chiedevo solo del linguaggio web da usare in base al progetto che ho spiegato), voglio qui chiedere invece se Python in generale è adatto ad un progetto web di medio-grandi dimensioni di calcoli e di dati sul web, in contemporanea con tante persone connesse sul sito ad elaborarli. Python è il linguaggio adatto per una piattaforma di calcolo matematica (elaboratore + intelligenza artificiale) che dovrà eseguire dal database una grande quantità di dati, a loro volta elaboratori con circa 30 (o forse più) modelli e teoremi matematici eseguiti quasi "contemporaneamente"?

PROBLEMA 1: Per la precisione, non proprio contemporaneamente: cliccando sul pulsante "calcola", questo deciderà se il risultato finale sarà visualizzato come giusto o sbagliato, solo dopo aver eseguito un controllo preventivo attraverso 30 o piu teoremi/modelli matematici lanciati automaticamente tutti nello stesso momento, ma eseguiti in successione veloce soltanto uno dopo l'altro (eseguito e controllato uno, si passa ad un altro, poi ancora ad un altro, e così via).

PROBLEMA 2: Oltre a ciò, questi 30 o più teoremi/modelli matematici utilizzeranno tanti numeri quasi contemporaneamente, presi da un database molto corposo. Che io sappia Python ha problemi con la gestione di database troppi grandi e perde molta molta velocità nell'eseguire calcoli con tanti dati. Non so di preciso quanto sia grande il DB e quante siano le query al secondo: per la loro gestione veloce c'è un massimo consigliato per Python?

PROBLEMA 3: Altro problema è che quel che ho scritto sopra, sarà eseguito contemporaneamente da tante persone connesse sul sito. Magari anche 50 persone connesse nello stesso istante.

Python può soddisfare in termini di performance tale progetto? Grazei
 
Ultima modifica:
Se la domanda e' "Python puo farcela?" allora nessuno puo' darti una risposta perche' i modelli matematici ed il db li hai solo tu, quindi in questo caso dovresti provare facendo dei benchmark e decidere se i tempi sono accettabili o meno.

Se invece la domanda e' "Python e' la scelta giusta quando conta la performance?" e' un po' complicato rispondere ma in linea di massima un programma compilato ad esempio in C e' diverse volte piu' rapido, nel migliore dei casi quasi alla pari. Python puo' essere usato insieme a grossi database ma solo perche' il lavoro pesante lo fa il database, che di sicuro non e' scritto in Python, questo risponde anche al problema numero 2 (ovviamente purche' eviti di fare una SELECT che ritorna millemila righe, perche' a quel punto la palla ritorna a python).

Il problema 3 invece e' di altro tipo in quanto non riguarda il linguaggio usato. Immaginando che questi modelli impegnino seriamente la CPU del server, che ci stiano millisecondi o che ci stiano secondi, se nel frattempo un altro utente fa una nuova richiesta potrebbe crashare il server o risultare inutilizzabile anche per chi non fa query pesanti. Per risolvere il problema dovresti assicurare una potenza di calcolo minima in base a quanti utenti ti aspetti e poi fare un sistema di coda, se ad esempio il tuo server regge 3 di queste operazioni contemporaneamente allora il 4o dovra' aspettare che qualcuno finisca.
 
@JunkCoder Attualmente sto solo valutando la fattibilità del progetto in termini di problematiche e informazioni generali in quanto non vorrei farmi realizzarmi un prodotto scadente facendolo passare per oro. Quindi il benchmark non lo farò se vedo che già preventivamente la fattibilità è poca. Mi permetto di farti alcune domande suddividendole in punti:

a) In quanto al linguaggio, visto che la piattaforma sarà web, mi suggirisci Python o altri? C'è un alternativa migliore di Python per il mio caso? Mi hai suggerito C ma non ho capito se parlavi solo di un programma desktop o so se è possibile realizzare siti in C (non conosco questo linguaggio, perdonami) e, qualora si, se il costo aumenterà a dismisura. La piattaforma sarà in gran parte elaboratore, ma avrà anche svariati algoritmi di intelligenza artificiale.

b) Per il "Python puo farcela?", posso dire che ogni modello matematico (30 o più da utilizzare quasi contemporeamente) sono composti ognuno da 4 o 5 operazioni e neanche troppo complicate, ma i dati che andranno ad adoperare (anche nella stessa operazione) e presi dal database, sono abbastanza. In generale nell'informatica, indipendentemente dal linguaggio di programmazione, c'è un limite suggerito di query che si possono utilizzare nello stesso momento o negli stessi secondi? Riguardo i tempi accetabili o meno, il massimo che vorrei al fine del risultato finale è un'attesa di massimo 20-30 secondi.

c) Hai detto che "Python puo' essere usato insieme a grossi database ma solo perche' il lavoro pesante lo fa il database" e che questo risponde al mio problema 2 di sopra. Quindi stai dicendo che la velocità di esecuzione e di calcolo non dipende tanto dal linguaggio di programmazione web ma dal database? Cioè utilizzando un altro linguaggio avrò quasi lo stesso risultato?

d) Per il problema 3, io puntavo ad avere un minimo di 20 o 30 utenti connessi nello stesso momento un massimo di 70-80. Come mi posso assicurare una potenza di calcolo minima? Quanto costa un server che regga 70-80 persone per fare tutte queste elaborazioni?

Grazie
 
Non sapevo cosa volessi fare e quando hai parlato di modelli matematici ho pensato a sistemi complessi come quelli meteorologici che richiedono molta potenza di calcolo e tempo, se sono 5 operazioni semplici verranno fatte in microsecondi qualunque linguaggio scegli.

c) Tutto il lavoro sul database lo fa un software come MySQL Server (fatto in C e C++), questo significa che si occupa di: lettura, scrittura, indicizzazione, serializzazione, formattazione e altro; mentre dal tuo programma non fai altro che interrogarlo. Quindi per una query come INSERT i tempi saranno molto simili tra tutti i linguaggi, mentre se fai una SELECT, ritorna 500 risultati e li devi processare a quel punto conta la performance del programma.

d) Il rapporto e' tra numero di utenti massimi e le caratteristiche hardware del server, non con il prezzo. E la potenza dell'hardware dipende da quanto "pesa" sulle risorse un utente in media. Quindi non puoi saperlo senza benchmark, tuttavia 100 utenti sono veramente pochi, quindi a meno che i modelli matematici siano davvero della NASA, ti basta un VPS potente quanto un PC da gaming piu' o meno. Se poi vuoi fare esperimenti con l'IA e il VPS non ce la fa magari ti serve un server dedicato.
 
Ultima modifica:
Leggo solo ora. Grazie. Dunque se leggi questo post, c'è scritto (nella terza discussione) cosa voglio fare di preciso, magari puoi darmi qualche informazioni o critica in più. Questa nostra discussione riguarda solo il linguaggio Python, mentre l'altra riguarda tutto il Backend Development.

Se ti annoi di leggere, ti cito solo una cosa che ho scritto: dopo aver cliccato sul testo "calcola" partiranno 15.000 o 22.500 operazioni nello stesso momento, o meglio, non esattamente nello stesso momento, ma in rapida successione un operazione dopo l'altra (eseguito e controllo con un modello matematico, si passa ad un altro, poi ancora ad un altro, e così via).

Puoi darmi maggio info riguardo INSERT E SELECT delle query? Perchè non so se c'è bisogno di fare un Select. Di server e database ne capisco poco. Io sono un matematico che si diletta nella programmazione di tanto in tanto, infatti il progetto sarà sviluppato da terzi. I dati nel database saranno scaricati tramite scraping, e poi aggiornati di settimana in settimana: non tutti, ma solo l'ultima giornata dei vari tornei che si aggiungera alla giornata precedente e così via. Gli algoritmi della piattaforma, per ogni modello matematico ed operano, estrarranno i numeri dal database in qualsiasi e in tutte le operazioni da fare. Estranno i numeri a partire dalla 1 giornata a quella più recente
 
22000 operazioni significa tutto e niente, se sono addizioni, sottrazioni e simili ci stara' circa un millisecondo per farle tutte, se sono radici quadrate, divisioni ci stara' qualche secondo, se sono calcoli piu' complessi chissa' e cosi' via.

Semplicemente INSERT e' la query per inserire dati nel database, cioe' quando fai "scraping", SELECT serve invece ad estrarre i dati, ti servira' quindi quando devi fare i tuoi calcoli, se sono semplici puoi far fare i calcoli al db stesso, raggruppando e usando le funzioni built-in per fare calcoli con i valori ed estrarre solo il risultato (sposti il carico sul db), altrimenti dovrai estrarre i dati e fare i calcoli con python (piu' dati estrai alla volta e piu' sara' lento) se devi estrarre giusto un paio di righe dal db non noterai la differenza, se ne estrai a migliaia la noterai.
 
Allora riguardo l'Insert e il Select è come pensavo. Era facilmente intuibile il loro uso. Però scusami, credo sia normale a questo punto richiamare tutti i dati e i numeri del database attraverso Select per utilizzarli negli algoritmi di calcolo, i quali richiedono appunto dei dati che sono contenuto nel database.

Hai detto che se sono semplici posso farli fare stesso al database. Non so se siano semplice: diciamo che sono circa 22000 operazioni (o qualcosina in piu) fatte in successione una dopo l'altra, in cui ogni modello matematico e algoritmo è composto fino a un massimo di 10 operazioni, però si tratta di tutte addizioni, sottrazioni, divisioni, moltiplicazioni e....potenze ed Exp math function. Cosa mi consigli @JunkCoder ?
 
Allora riguardo l'Insert e il Select è come pensavo. Era facilmente intuibile il loro uso. Però scusami, credo sia normale a questo punto richiamare tutti i dati e i numeri del database attraverso Select per utilizzarli negli algoritmi di calcolo, i quali richiedono appunto dei dati che sono contenuto nel database.

Hai detto che se sono semplici posso farli fare stesso al database. Non so se siano semplice: diciamo che sono circa 22000 operazioni (o qualcosina in piu) fatte in successione una dopo l'altra, in cui ogni modello matematico e algoritmo è composto fino a un massimo di 10 operazioni, però si tratta di tutte addizioni, sottrazioni, divisioni, moltiplicazioni e....potenze ed Exp math function. Cosa mi consigli @JunkCoder ?

Essendo cosi' tante le operazioni e' improponibile farle attraverso query tipo SELECT SUM(x) ... . Se ti servono TUTTI i numeri allora non puoi far altro che tirarli tutti giu' con una select, almeno abbi l'accortezza di filtrare i campi e di prelevare solo quelli che ti servono, scartando le informazioni che in quella fase magari non ti interessano (chesso' id, data_inserimento ecc). Cosi' facendo anche con un migliaio di numeri in db ce la dovrebbe fare in tempo ragionevole (a trasferire i dati dal db perche' poi a fare i calcoli e' un attimo).
A mio parere stai pianificando troppo nel dettaglio, non stiamo parlando di software dove e' richiesta performance a livello di microsecondi, secondo me puoi farlo tranquillamente e reggera', se i tuoi utenti o i dati aumenteranno e vedi che inizia ad arrancare allora ottimizzi il sistema.
 
Ultima modifica:
Grazie mille per i preziosi suggerimenti. Mi torneranno utilissimi. Volevo chiederti una cosa riguardo i calcoli stesso dal database che mi hai suggerito.

La maggior parte di tutte le operazioni, partirà dalle mediepunti dei match e degli incontri (punti / n. match), su essi sono costruiti la maggior parte degli algoritmi più difficili. In tutto sono circa 6000 medie da calcolare. Considerando che nella divisione il numero dei matchs da considerare posso scegliere io manualmente (es punti / ultime 7 partite, oppure ancora punti / ultime 10 partite, ecc), saranno molte ma molto di piu di 6000 le medie da calcolare (forse il doppio, il triplo o il quadruplo). Esse inoltre non saranno mai stabili, ossia troppo fisse, perchè variano di settimana in settimana a distanza di ogni 2-3 giorni dopo il nuovo scraping dei risultati dei match.

Mi consigli ugualmente di far calcolare queste medie (è una semplice divisione alla fine, ma ne sono tantissime da fare) al database al fine di risparmiare nei calcoli di Python nel sito? Il datbase è in grado di reggere tante operazioni? Oppure potrei avere un effetto contrario, cioè che invece risparmiare secondi/minuti nella velocità di calcolo, facendo come suddetto si perde ancora piu tempo?

Grazie @JunkCoder
 
Ultima modifica:
Grazie mille per i preziosi suggerimenti. Mi torneranno utilissimi. Volevo chiederti una cosa riguardo i calcoli stesso dal database che mi hai suggerito.

La maggior parte di tutte le operazioni, partirà dalle mediepunti dei match e degli incontri (punti / n. match), su essi sono costruiti la maggior parte degli algoritmi più difficili. In tutto sono circa 6000 medie da calcolare. Considerando che nella divisione il numero dei matchs da considerare posso scegliere io manualmente (es punti / ultime 7 partite, oppure ancora punti / ultime 10 partite, ecc), saranno molte ma molto di piu di 6000 le medie da calcolare (forse il doppio, il triplo o il quadruplo). Esse inoltre non saranno mai stabili, ossia troppo fisse, perchè variano di settimana in settimana a distanza di ogni 2-3 giorni dopo il nuovo scraping dei risultati dei match.

Mi consigli ugualmente di far calcolare queste medie (è una semplice divisione alla fine, ma ne sono tantissime da fare) al database al fine di risparmiare nei calcoli di Python nel sito? Il datbase è in grado di reggere tante operazioni? Oppure potrei avere un effetto contrario, cioè che invece risparmiare secondi/minuti nella velocità di calcolo, facendo come suddetto si perde ancora piu tempo?

Grazie @JunkCoder

Te lo ripeto, stando cosi' le cose non ti complicare la vita inutilmente, ho fatto un benchmark per farti capire (in PHP ma se e' piu' veloce di Python e' di poco) :
PHP:
$start = microtime(true);
$medie = [];
for ($i = 0; $i < 800000; $i += 10) {
    $media = ($nums[$i] + $nums[$i + 1] + $nums[$i + 2] + $nums[$i + 3] + $nums[$i + 4] + $nums[$i + 5] + $nums[$i + 6] + $nums[$i + 7] + $nums[$i + 8] + $nums[$i + 9]) / 10;
    $medie[]= $media;
}
$fine = microtime(true);
var_dump($fine - $start);

Cambiando i valori ho avuto questi risultati:

Numero medieTempo in millisecondi
8000.16
80001.47
8000016.07
800000179.02
80000001785.2

Credo che 16 millisecondi sia accettabile per 80k medie. Considerando che i numeri nell'array erano random a 32 bit, quindi con numeri grossi fino a
4294967295.

Allo stesso modo, se tiri giu' dal db 10000 numeri ci stara' millisecondi, nel primo post ho parlato di carico sul db e sull'applicativo perche' esistono progetti dove spaccare il millisecondo e' importante e non sapevo se fosse il tuo caso.
 
Grazie per il calcolo @JunkCoder , non immaginavo questa risposta così dettagliata. Sei molto gentile, grazie. Posso chiederti, in tal senso, se puoi risolvermi un mio grandissimo dubbio per favore? Due domande per favore:

1) Hai detto che ci vogliono 16 millisecondi per 80k di medie. Di questa tempistica fa parte anche il tempo impiegato per prendere i dati numerici da ogni squadra o atleta del database?

2) Una volta ottenute le medie, saranno utilizzate (quindi con Select) come base per altri algoritmi, ossia 22.500 algoritmi. Ogni algoritmo è composto da 4 o 5 semplici operazioni matematiche come divisioni, addizioni, moltiplicazioni e...un bel pò di potenze (anzi, molte potenze) e la funzione Exp che richiama una costante. C'è da dire però, non so se è rilevante, che le suddette operazioni sono scritte con molte parentesi in un solo rigo.

Con 22.500 algoritmi composti come suddetto, quanto tempo occorrerà prima di elaborare i calcoli? E con 50.000 e 100.000? Giusto per farmi un'idea?

Chiedo perchè un mio amico aveva un software desktop che più o meno faceva le stesse cose con tante operazioni, ma era scritto male. Diceva che aveva molto codice ripetitivo e che si accedeva al database svariate volte sia per prendere i dati delle squadre e sia per eseguire i calcoli. Non ricordo la sua risposta di preciso, ma era una cosa del genere. Il suo software ci metteva tra i 3 e i 7-8 minuti per fare queste operazioni. Quindi per questo pensavo che ci volessero molti minuti, non così tanti come il mio amico (visto che il suo software era scritto male), ma almeno 1 minuto. Puoi illuminarmi (spero in positivo) dicendomi per favore quando tempo ci vuole con 22.500, 50.000 e 100.000 operazioni come quelle suddette? (tenendo a mente che, oltre le semplici operazioni di addizione, divisione, ecc...ci sono anche molte potenze e molte parentesi nelle formule in un solo rigo, ecc).

Grazie mille di tutto. Sei stato molto gentile. Spero risponderei perchè così mi togli un dubbio che ho in testa da tempo.

P.S: Come server (se alla piattaforma web stanno ad esempio 70-100 persone che eseguono contemporaneamente questi calcoli), cosa devo usare? va bene anche se uso un potente pc da gaming da tenere sempre accesso? (ma dovrei comprarlo appositamente). Oppure meglio se acquisto un servizio cloud o altro ancora?
 
Grazie per il calcolo @JunkCoder , non immaginavo questa risposta così dettagliata. Sei molto gentile, grazie. Posso chiederti, in tal senso, se puoi risolvermi un mio grandissimo dubbio per favore? Due domande per favore:

1) Hai detto che ci vogliono 16 millisecondi per 80k di medie. Di questa tempistica fa parte anche il tempo impiegato per prendere i dati numerici da ogni squadra o atleta del database?

2) Una volta ottenute le medie, saranno utilizzate (quindi con Select) come base per altri algoritmi, ossia 22.500 algoritmi. Ogni algoritmo è composto da 4 o 5 semplici operazioni matematiche come divisioni, addizioni, moltiplicazioni e...un bel pò di potenze (anzi, molte potenze) e la funzione Exp che richiama una costante. C'è da dire però, non so se è rilevante, che le suddette operazioni sono scritte con molte parentesi in un solo rigo.

Con 22.500 algoritmi composti come suddetto, quanto tempo occorrerà prima di elaborare i calcoli? E con 50.000 e 100.000? Giusto per farmi un'idea?

Chiedo perchè un mio amico aveva un software desktop che più o meno faceva le stesse cose con tante operazioni, ma era scritto male. Diceva che aveva molto codice ripetitivo e che si accedeva al database svariate volte sia per prendere i dati delle squadre e sia per eseguire i calcoli. Non ricordo la sua risposta di preciso, ma era una cosa del genere. Il suo software ci metteva tra i 3 e i 7-8 minuti per fare queste operazioni. Quindi per questo pensavo che ci volessero molti minuti, non così tanti come il mio amico (visto che il suo software era scritto male), ma almeno 1 minuto. Puoi illuminarmi (spero in positivo) dicendomi per favore quando tempo ci vuole con 22.500, 50.000 e 100.000 operazioni come quelle suddette? (tenendo a mente che, oltre le semplici operazioni di addizione, divisione, ecc...ci sono anche molte potenze e molte parentesi nelle formule in un solo rigo, ecc).

Grazie mille di tutto. Sei stato molto gentile. Spero risponderei perchè così mi togli un dubbio che ho in testa da tempo.

P.S: Come server (se alla piattaforma web stanno ad esempio 70-100 persone che eseguono contemporaneamente questi calcoli), cosa devo usare? va bene anche se uso un potente pc da gaming da tenere sempre accesso? (ma dovrei comprarlo appositamente). Oppure meglio se acquisto un servizio cloud o altro ancora?

100k operazioni composte da circa 4 operazioni semplici (+, -, *) quindi 400k operazioni, ci stara' meno di 16 millisecondi, perche' le operazioni base (in cui rientrano le potenze essendo moltiplicazioni) sono piu' rapide delle divisioni usate nelle medie.

Ovviamente questi calcoli di tempo sono fatti sul mio PC, ma non dovrebbero distaccarsi troppo da un server decente.

Per il punto 1: solo il tempo di calcolo, l'estrazione dal db non e' contata nei 16ms, considera comunque che il tempo di query sara' breve se non fai raggruppamenti, join e calcoli nella query stessa, parliamo sempre quindi dell'ordine di millisecondi.

Devi poi considerare una cosa importantissima: se hai un software desktop il client deve collegarsi in remoto al db e piu' dati richiedera' piu' il tempo di trasferimento sara' lungo oltre al tempo di latenza (a peggiorare le cose il tuo amico faceva diverse query a distanza di tempo, aspettando ogni volta il risultato). Invece sulla tua web app avrai il db in locale con latenza a zero, avrai prevalentemente quindi solo i tempi di calcolo.

Per il programma del tuo amico: hai detto che era scritto male quindi per nulla ottimizzato, in piu' Java e' uno dei linguaggi piu' famosi e meno performante di tutti. Non mi stupisco che ci stia 3-7 minuti.
 
@JunkCoder Diviso la mia risposta in punti, altrimenti si potrebbe creare confusione:

1) Nel punto 1 di sopra, io intendevo un tempo contato indicativamente comprendente anche l'estrazione dei numeri dal database (oltre che il conto automatico delle partite e giornate di campionato per fare Gol o Punti / N. partite) per calcolare le medie.

2) Come anche per le 100k operazioni composta da 4 operazioni l'una, quindi 400k operazioni, intendevo oltre il tempo del calcolo....anche il tempo per prendere tutti quei dati dal database. Quasi tutte le 400k operazioni, partono dai risultati delle medie, le quali non sono salvate sul database (solo salvati solo il numero dei punti o gol e l'elenco dei relativi machs). Quindi in base a ciò, quando tempo ci vorrà indicativamente a occhio e croce?

3) Il software del mio amico era scritto in C# mi sembra, ma non si collegava ad un database remoto, lo possedava già nella cartella del software in quanto prima di iniziare i calcoli veniva fatto uno scraping dei dati da un sito al database del software, quindi i dati non erano presi in remoto. In questo caso non avrei dovuto solo avere i tempi di calcolo? Che variavano dai 3 ai 7-8 minuti circa?

4) Se proprio non hai il tempo o non riesci a calcolarmi il tempo delle domande 1 e 2, riusciresti ad intuito ad indicarmi una tempistica (anche se impreciso di qualche secondo) più o meno? In 30/40 secondi ce la faccio? (considerando tutta quella quantità di dati da prendere dal database e considerando tutte quelle operazioni)

5) Se sulla piattaforma web ci sono altre 50-80 persone in linea nello stesso momento, che eseguono queste operazioni, i tempi di calcolo si rallenteranno molto? Se sì, sempre indicativamente senza troppa precisione, di quanto si rallenteranno?

6) Detto ciò, riguardo il server, cosa mi consigli? Va bene anche un potente pc da gaming sui 1500 euro da tenere acceso giorno e notte per gestire 50-80 persone tutte nello stesso momento? Non possedendo ancora un tale pc, dovrei comprarlo appositamente, me lo consigli? Oppure mi consigli di abbonarmi ad una cloud o affittarmi proprio un server? Quanto costano i server (piccoli nel mio caso credo?)?

Grazie
 
1 e 2: non e' possibile fare previsioni sul nulla, siamo comunque al massimo nell'ordine di qualche secondo.

3: Il software del tuo amico se faceva scraping sul momento allora e' normalissimo che ci sta anche 8 minuti, se invece i dati venivano cachati tutti in locale e ci stava solo il tempo di calcolo e' tutt'altra cosa, dovresti saperlo prima di fare considerazioni. Mi sembra strano perche' C# e' parecchio ottimizzato e veloce, non credo che ci stia 8 minuti neanche per fare anche 1 miliardo di addizioni/medie ecc (altro che 400k) a meno di avere un Intel 8086 come processore :asd:.

4: ti direi di si, anche largamente ma tutto sta nell'implementazione effettiva.

5: impossibile da prevedere senza le caratteristiche hardware del server.

6: un VPS da 50 euro/mese circa dovrebbe essere sufficiente.
 
Ultima modifica:
Grazie per tutte le informazione. Sei stato molto gentile. Secondo te, indicativamente senza troppa precisione, quanto mi verrebbe a costare tale lavoro con Python? Io non ne ho proprio idea, seppur ho stanziato un buon budget. Tra i 5.000 euro o 7.000 euro ce la faccio?

In pratica il sito il lavoro consiste in un sito web, una piattaforma web di calcolo di pronostici sportivi dove gli utenti dovranno abbonarsi per accedere. Però per ogni singola previsione/pronostico bisogna

Il lavoro è diviso così in:
1) Scraping della data del match, N. giornata del torneo, campionato, match, risultato. E poi un ulteriore scraping per le quote sui siti dei bookmakers
2) Calcolo medie in base al numero dei gol fatti e subiti (presi dai risultati)
3) Scelta pronostico della previsione con 13 tipologie di segni diversi: per la precisioni i segni base sono 6, poi ci sono altri 7 segni che sono combinazioni dei primi 6 (ad esempio 1X, che sarebbe la combo tra il segno 1 e X, oppure ancora 1X+Over).

IMPORTANTE 4) Ogni segno, ossia ogni match pronosticato con un determinato segno, sarà soggetto a 15 modelli matematici, tuttavia questi si ripetono tra loro perchè vengono applicati cambiando il numero del match giocatori in base a:
- Una squadra che gioca in casa (dalla 1a giornata a quella in corso)
- Una squadra che gioca fuori (dalla 1a giornata a quella in corso)
- Una squadra in generale, cioè casa+fuori (dalla 1a giornata a quella in corso)
- Lo stato di forma di una squadra in casa , cioè le ultime 6 partite disputate in casa
- Lo stato di forma di una squadra fuoricasa, cioè le ultime 6 partite disputate fuoricasa
- Lo stato di forma di una squadra in generale, cioè le ultime 6 partite disputate in generale (casa+fuori)

Quindi avremo 15 modelli matematici x 6 selezioni diverse = 90 algoritmi, i quali sono tutti uguali e ripetiti per selezioni diversi, ma è comunque nuovo codice da scrivere, quindi continamoli ugualmente.

Di conseguenza abbiamo 6 tipologie di segni per le previsioni dove ogni tipologia contiene 90 modelli matematici (in realtà 15, ma tutti ripetuti per selezioni come detto sopra), per un totale di 6 x 90 = 540 algoritmi totali di calcolo. Poi ci sarebbero gli altri 7 segni, ma siccome sono composti da combinazioni ai quali sono già stati applicati i 90 algoritmi di modelli matematici, i loro algoritmi saranno sicuramente qualche decina e soprattutto più facili (ossia combinare i segni con maggiore probabilità d'uscita per creare una combo).

5) Cliccando sul pulsante calcola, usciranno tutti i match con i pronostici, i quali potranno essere filtrati in base a delle semplici preferenze.

In base a queste spiegazioni, quanto credi possa essere il costo della piattaforma web in Python? Lo so che è impossibile dirlo, ma indicativamente secondo te? Ad esempio tra X € e Y €. Grazie @JunkCoder
 
Direi che hai avuto abbastanza stime "astratte" da parte mia, con 5k dovresti starci dentro di parecchio. Non ti resta che collaudare, scrivi anche solo un paio dei 500 e passa algoritmi, butta dentro dei dati e fai un benchmark, cosi' ti basta portarlo in proporzione ed avrai un idea realistica del consumo di risorse. Il prezzo finale si lega sia a quello che al provider che scegli quindi parlare di quello e' fuffa, ovviamente usando il buon senso non sara' una cosa molto costosa.
Per lo scraping potresti pensare di fare una cache in modo di non doverlo fare per ogni tuo utente, che e' la cosa che prende piu' tempo soprattutto se aumenta la latenza col server remoto.
 
Ultima modifica:
@JunkCoder Per quanto riguarda le tue stime di risorse e velocità, sei stato più che chiaro e ti ringrazio tantissimo. Però non riesco a capire quanto possa pagare ad un programmatore (io ho molti limiti, quindi lascio il servizio in mani altrui). Per tutto questo lavoro (forse saranno anche 6k di algoritmi) quanto potrebbe cercarmi un programmatore Python? Con 7-8 mila euro me la cavo? Oppure viene di più tipo 10 mila euro? Oppure ancora di più? (Puoi sparare una cifra approssimativa per favore? Poi si sa che non sarà preciso quella, ma è giusto per farmi un'idea). Grazie
 
Non avevo risposto perche' non ne ho la minima idea, di solito contatti un programmatore o un'azienda di programmazione e ti fai fare un preventivo spiegando bene i requisiti, impossibile prevedere la cifra non sapendo nel dettaglio ne' tutti i requisiti ne' l'azienda a cui ti rivolgerai. Detto questo visto che lo fai fare ad altri e non devi toccare codice perche' farlo proprio in python? Comunque non so dirti, io non lavoro su commissione e non programmo nemmeno in python quindi sono la persona meno indicata a cui chiedere per questi aspetti.
 
Pensavo ci fossero problemi, che ho notato che un paio di volte non mi è arrivata la notifica. Volevo farlo in Python perchè ci volevo aggiungere alcuni algoritmi di Machine Learning e forse Deep Learning. Visto che Python è il linguaggio migliore (con R e Matlab) per l'AI, ho optato su esso.

Comunque con 5-6 k di algoritmi, come detto sopra, ri-confermi le tue risposte riguardo la tempistica di calcolo ed esecuzione verso l'utente che clicca sul pulsante Calcola? Grazie