Programmazione

Estrazione di informazioni sul sistema Linux e sull'hardware utilizzando Python

Estrazione di informazioni sul sistema Linux e sull'hardware utilizzando Python

Trovare informazioni sull'hardware e sul sistema in Linux è un compito utile e interessante. Possiamo estrarre i dettagli del sistema operativo, i dettagli dell'utente, i dettagli della memoria, i dettagli della CPU e molto altro usando semplici codici Python su Linux. Sebbene possiamo eseguire molte di queste cose usando gli script di terminale e bash, python è molto più interessante.

Come amante di Python, vogliamo che ogni attività venga eseguita utilizzando quel linguaggio, quindi estrarre le informazioni di sistema e hardware con python è un ottimo compito. Inoltre, possiamo imparare sia Linux che Python contemporaneamente. Questo articolo sarà piuttosto lungo, quindi prenditi il ​​​​tuo tempo per leggere l'intero articolo ed eseguire ogni codice per una migliore comprensione.

Puoi copiare ciascuno dei codici in un IDE Python ed eseguirlo. Se non hai un IDE Python o vuoi confrontare tra IDE, consulta la nostra guida sui 10 migliori IDE per Linux. A proposito, sto usando VS Code come IDE per scrivere codice. È open-source e facile da usare. Se desideri utilizzare Visual Studio Code, consulta la nostra guida sull'installazione del codice VS su Linux.

Estrarre le informazioni di sistema usando Python

In questo articolo svilupperemo un programma che estrarrà i seguenti dettagli:

Per ottenere questi dettagli, utilizzeremo i moduli presenti nella libreria standard di Python. Alcuni dei moduli che utilizzeremo sono OS, piattaforma, ecc. Ho anche inserito il codice sorgente in Github; puoi vedere una demo del programma scaricandola dal mio repository Github ed eseguendola.

Per seguire questo tutorial, si consiglia di avere l'ultima versione di Python installata nel sistema. Puoi seguire la nostra guida sull'installazione di Python su Linux.

Requisiti

Molte delle librerie che usiamo in questo tutorial sono presenti nella libreria standard di Python. Abbiamo solo bisogno di installare il pacchetto psutil. Puoi verificarlo importandolo. Se non hai psutil installato, puoi installarlo facilmente usando lo strumento pip. Per installare pip nel nostro sistema, dobbiamo eseguire il seguente comando nel terminale.

pip install psutil

Ottenere i dettagli di base del sistema

Ora che hai installato psutil vediamo come usarlo per raccogliere il sistema operativo usando python. Stavamo usando il piattaforma modulo presente nella libreria standard python per raccogliere queste informazioni di base sul sistema. Devi copiare il seguente codice nel tuo IDE Python preferito ed eseguirlo.

# importando i moduli richiesti import platform # stampando l'architettura del sistema operativo print("[+] Architecture :", platform.architettura()[0]) # Visualizzazione della macchina print("[+] Macchina :", piattaforma.machine()) # stampa le informazioni sulla versione del sistema operativo print("[+] Release del sistema operativo :", platform.release()) # stampa il nome del sistema attualmente in uso print("[+] System Name :",platform.system()) # Questa riga stamperà la versione del tuo sistema operativo print("[+] Operating System Version :", platform.version()) # Questo stamperà il nodo o il nome host del tuo sistema operativo print("[+] Node: " + platform.node()) # Questo stamperà la tua piattaforma di sistema print("[+] Platform :", platform.platform()) # Questo stamperà le informazioni del processore print("[+] Processor :",platform.processore())

Nel codice sopra, abbiamo prima importato il modulo della piattaforma presente nella libreria standard python. Dopo aver importato il modulo, utilizziamo le funzioni del modulo della piattaforma per ottenere le informazioni richieste. Eseguendo il codice sul mio dispositivo, ho ottenuto il seguente output.

informazioni di sistema di base usando python

Come possiamo vedere nell'output, il programma mostra molti dettagli importanti sul sistema operativo come l'architettura del sistema, la piattaforma e molto altro.

Tempo di attività del sistema

Possiamo anche ottenere il tempo di avvio del sistema e il tempo di attività del sistema in python. Dobbiamo usare il psutil libreria che abbiamo installato in precedenza. Possiamo ottenere l'uptime del sistema leggendo il file uptime presente nella directory proc in Linux.

Per favore copia il seguente codice nel tuo IDE Python preferito ed eseguilo.

from datetime import datetime import psutil # Utilizzo della libreria psutil per ottenere l'ora di avvio del sistema boot_time = datetime.fromtimestamp(psutil.boot_time()) print("[+] System Boot Time:", boot_time)

Questo codice stamperà l'ora di avvio, ovvero l'ora in cui il sistema è stato avviato. Eseguendo il programma sul mio PC, ho ottenuto il seguente output.

tempo di avvio del sistema usando python

Possiamo anche vedere il tempo di attività del sistema, che è il tempo per il quale il sistema è in esecuzione. Abbiamo bisogno di leggere il file di uptime della directory proc, come mostrato nel codice seguente.

# ottenere il tempo di funzionamento del sistema dal file uptime nella directory proc con open("/proc/uptime", "r") as f: uptime = f.leggere().diviso(" ")[0].strip() uptime = int(float(uptime)) uptime_hours = uptime // 3600 uptime_minutes = (uptime % 3600) // 60 print("[+] System Uptime : " + str(uptime_hours) + ":" + str( uptime_minutes) + " ore")

Ho il seguente output sull'esecuzione del codice.

uptime del sistema usando python

Processi

Possiamo anche usare python per ottenere un elenco dei processi attualmente in esecuzione, numero totale di processi. Dobbiamo eseguire il seguente codice.

import os pids = [] for subdir in os.listdir('/proc'): if subdir.isdigit(): pids.append(subdir) print('Numero totale di processi: 0'.format(len(pid)))

Eseguendo il codice, ho ottenuto l'output, come mostrato nell'immagine qui sotto.

numero totale di processi

informazioni utente

Possiamo anche ottenere l'elenco di tutti gli utenti presenti nel nostro dispositivo Linux utilizzando la libreria pwd presente nella libreria standard python. Per fare ciò, devi copiare il seguente codice nel tuo IDE Python ed eseguirlo.

import pwd users = pwd.getpwall() per l'utente negli utenti: print(utente.pw_name, utente.pw_shell)

Eseguendo il codice sopra, otterrai tutti gli utenti presenti nel tuo dispositivo e le loro shell.

Informazioni sulla CPU

Abbiamo raccolto i dettagli del sistema ora per raccogliere alcune informazioni sulla CPU utilizzata dalla nostra macchina. Possiamo raccogliere informazioni sulla CPU dalla nostra macchina Linux in due modi. Il primo e più semplice modo è usare il psutil modulo e il secondo modo è leggere il file /proc/cpuinfo.

Vediamo come possiamo usare la libreria psutil per ottenere le informazioni sulla CPU. Devi copiare il seguente codice nel tuo IDE Python preferito ed eseguirlo.

# importando i pacchetti richiesti import psutil # Questo codice stamperà il numero di core CPU presenti print("[+] Number of Physical cores :", psutil.cpu_count(logical=False)) print("[+] Numero di core totali:", psutil.cpu_count(logical=True)) print("\n") # Questo stamperà la frequenza massima, minima e corrente della CPU cpu_frequency = psutil.cpu_freq() print(f"[+] Frequenza massima: cpu_frequency.massimo:.2fMhz") print(f"[+] Frequenza minima : frequenza_cpu.minimo:.2fMhz") print(f"[+] Frequenza corrente: cpu_frequency.attuale:.2fMhz") print("\n") # Questo stamperà l'utilizzo della CPU per core per i, percentuale in enumerate(psutil.cpu_percent(percpu=True, interval=1)): print(f"[+] Utilizzo CPU del Core i : percentage%") print(f"[+] Utilizzo totale CPU : psutil.cpu_percent()%")

Vediamo cosa sta succedendo nel programma di cui sopra. Nella prima riga, abbiamo importato il psutil modulo, che aiuterà a raccogliere i dettagli della CPU. Nella seconda e terza riga, usiamo il cpu_count() funzione di psutil modulo per contare il numero di core della CPU. Quindi abbiamo usato la funzione cpu_freq() per ottenere la frequenza massima, minima e corrente. Infine, usiamo la funzione cpu_percent fo psutil per trovare l'utilizzo della CPU. Eseguendo il codice nella mia macchina, ho ottenuto il seguente output.

Informazioni sulla CPU utilizzando psutil

Come possiamo vedere nell'output che tutti i dettagli della CPU sono stati emessi dal programma nel terminale. Possiamo anche ottenere il nome della CPU leggendo il file /proc/cpuinfo usando python. Per fare ciò, dobbiamo eseguire il seguente codice.

# leggendo il file cpuinfo per stampare il nome della # CPU presente con open("/proc/cpuinfo", "r") come f: file_info = f.readlines() cpuinfo = [x.striscia().split(":")[1] for x in file_info if "model name" in x] for index, item in enumerate(cpuinfo): print("[+] Processor " + str(index) + " : " + item )

Possiamo anche raccogliere altre informazioni sulla CPU utilizzando il file /proc/cpuinfo. Leggo solo il nome del modello di CPU, ma puoi aprire il file e vedere le altre informazioni presenti nel file e puoi usarle nel programma. Ecco l'output.

Informazioni sulla CPU utilizzando il file cpuinfo

Raccogliamo alcune informazioni sulla memoria usando python.

Informazioni sulla memoria

Come le informazioni sulla CPU, possiamo anche ottenere informazioni sulla memoria da due posti. Uno sta usando lo strumento psutil e il secondo sta leggendo il file proc/meminfo. Per cominciare, iniziamo a raccogliere informazioni sulla memoria utilizzando la libreria psutil. Per favore copia il seguente codice nel tuo IDE Python preferito ed eseguilo.

# importando i moduli richiesti import psutil # scrivendo una funzione per convertire i byte in GigaByte def bytes_to_GB(bytes): gb = bytes/(1024*1024*1024) gb = round(gb, 2) return gb # Usando la funzione virtual_memory() restituirà una tupla virtual_memory = psutil.virtual_memory() #Questo stamperà i dettagli della memoria primaria print("[+] Memoria totale presente :", bytes_to_GB(virtual_memory.totale), "Gb") print("[+] Memoria totale disponibile:", bytes_to_GB(virtual_memory.disponibile), "Gb") print("[+] Memoria totale utilizzata:", bytes_to_GB(virtual_memory.utilizzato), "Gb") print("[+] Percentuale utilizzata:", memoria_virtuale.percent, "%") print("\n") # Questo stamperà i dettagli della memoria di swap se disponibile swap = psutil.swap_memory() print(f"[+] Memoria di swap totale :bytes_to_GB(swap.totale)") print(f"[+] Memoria di scambio libera: bytes_to_GB(swap.free)") print(f"[+] Memoria di swap utilizzata: bytes_to_GB(swap.usato)") print(f"[+] Percentuale utilizzata: scambio.per cento%")

Vediamo cosa sta succedendo nel codice sopra. Nella prima riga, abbiamo importato la libreria psutil, quindi abbiamo utilizzato la sua funzione virtual_memory(), che restituisce una tupla con informazioni sulla memoria virtuale. Quindi usiamo la funzione swap_memory() per ottenere le informazioni sulla memoria di swap. Abbiamo anche creato un nome di funzione bytes_to_GB(), che convertirà i byte in GigaBytes per una migliore leggibilità. Ho ottenuto il seguente output.

informazioni sulla memoria usando psutil

Possiamo anche usare il file meminfo presente nella directory proc di Linux per recuperare informazioni sulla memoria come memoria totale, memoria utilizzata, ecc. Per fare ciò, esegui il seguente codice.

# Raccolta di informazioni sulla memoria dal file meminfo print("\nLettura del file /proc/meminfo: \n") with open("/proc/meminfo", "r") as f: lines = f.readlines() print("[+] " + lines[0].strip()) print("[+] " + righe[1].striscia())

Ed ecco l'output:

informazioni sulla memoria utilizzando il file meminfo

Informazioni sul disco

Fino ad ora, abbiamo visto alcuni dettagli di base del sistema, dettagli della CPU, dettagli della memoria. Vediamo ora le informazioni sul disco presente nella nostra macchina. Per estrarre le informazioni sul disco, utilizzeremo il modulo psutil per semplificare il nostro compito e non abbiamo bisogno di reinventare la ruota. Guarda il codice qui sotto per vedere un esempio funzionante del codice. Puoi copiare il codice ed eseguirlo nell'IDE del tuo Python preferito.

# importazione dei moduli richiesti import psutil # accesso a tutte le partizioni del disco disk_partitions = psutil.disk_partitions() # scrive una funzione per convertire i byte in Giga bytes def bytes_to_GB(bytes): gb = bytes/(1024*1024*1024) gb = round(gb, 2) return gb # visualizza la partizione e le informazioni sull'utilizzo per la partizione in disk_partitions: print("[+] Dispositivo di partizione: ", partizione.dispositivo) print("[+] File System: ", partizione.fstype) print("[+] Punto di montaggio: ", partizione.punto di montaggio) disk_usage = psutil.disk_usage(partizione.punto di montaggio) print("[+] Spazio su disco totale:", bytes_to_GB(disk_usage.totale), "GB") print("[+] Spazio libero su disco:", bytes_to_GB(disk_usage.free), "GB") print("[+] Spazio su disco utilizzato:", bytes_to_GB(disk_usage.utilizzato), "GB") print("[+] Percentuale utilizzata:", disk_usage.percent, "%") # ottiene le statistiche di lettura/scrittura dall'avvio disk_rw = psutil.disk_io_counters() print(f"[+] Lettura totale dall'avvio: bytes_to_GB(disk_rw.read_bytes) GB") print(f"[+] Total Write sice boot : bytes_to_GB(disk_rw.write_bytes) GB")

Nel codice, abbiamo prima importato la libreria psutil, necessaria per raccogliere le informazioni sul disco. Poi abbiamo usato il suo partizioni_disco() funzione per ottenere l'elenco delle partizioni del disco disponibili con le relative informazioni. Usiamo anche la funzione disk_usage() per ottenere l'utilizzo di queste partizioni. Infine, usiamo il disk_io_counters() funzione per ottenere la lettura/scrittura totale del disco dall'avvio.  Ecco un esempio di output.

informazioni sul disco usando python

Potresti ottenere qualche altro output a seconda del tuo disco e delle partizioni.

Informazioni di rete

Possiamo anche raccogliere le informazioni di rete del sistema usando la libreria psutil. Per fare ciò, copia il seguente codice nel tuo IDE Python ed eseguilo.

# importando i moduli richiesti import psutil # scrivendo una funzione per convertire i byte in gigabyte def bytes_to_GB(bytes): gb = bytes/(1024*1024*1024) gb = round(gb, 2) return gb # raccogliendo tutte le interfacce di rete ( virtuale e fisico) dal sistema if_addrs = psutil.net_if_addrs() # stampa le informazioni di ciascuna interfaccia di rete per interface_name, interface_addresses in if_addrs.items(): for address in interface_addresses: print("\n") print(f"Interface :", interface_name) if str(address.famiglia) == 'IndirizzoFamiglia.AF_INET': print("[+] Indirizzo IP :", indirizzo.indirizzo) print("[+] Netmask :", indirizzo.netmask) print("[+] IP di trasmissione:", indirizzo.trasmissione) elif str(indirizzo.famiglia) == 'IndirizzoFamiglia.AF_PACKET': print("[+] Indirizzo MAC :", indirizzo.indirizzo) print("[+] Netmask :", indirizzo.netmask) print("[+] Broadcast MAC :",indirizzo.broadcast) # ottenere le statistiche di lettura/scrittura della rete dall'avvio print("\n") net_io = psutil.net_io_counters() print("[+] Totale byte inviati:", bytes_to_GB(net_io.bytes_sent)) print("[+] Total Bytes Received :", bytes_to_GB(net_io.bytes_recv))

Ecco un esempio di output dal mio PC di prova.

informazioni di rete usando python

Altre informazioni sull'hardware

Possiamo anche usare il psutil libreria per ottenere altre informazioni sull'hardware come informazioni sulla batteria, velocità di rotazione delle ventole, informazioni sulla temperatura di vari dispositivi, eccetera. Vediamo come possiamo farlo uno per uno.

Se stai usando un laptop, puoi usare il psutil.sensori_batteria() funzione per ottenere le informazioni sulla batteria. Per fare ciò, copia ed esegui il seguente codice nel tuo IDE Python.

import psutil batteria = psutil.sensori_batteria() print("[+] Percentuale batteria:", round(batteria.percent, 1), "%") print("[+] Durata batteria residua:", round(batteria.secsleft/3600, 2), "hr") print("[+] Power Plugged :", batteria.power_plugged)

Nel codice sopra, usiamo il sensori_batteria() funzione per ottenere le informazioni sulla batteria, come la percentuale della batteria, il tempo rimanente, l'alimentazione collegata o meno. Eseguendo il codice nella mia macchina, ho ottenuto il seguente output.

informazioni sulla batteria usando python

Possiamo anche utilizzare la libreria psutil per ottenere l'RPM (giri al minuto) della ventola utilizzando la funzione sensori_fan() mentre la ventola è in funzione. Il psutil può essere utilizzato anche per ottenere la temperatura di vari dispositivi. Possiamo farlo usando la funzione sensor_temperatures() di psutil. Lascio a te questo compito per esercitarti.

Script finale

Ora combiniamo tutti i codici con la creazione di un programma finale per raccogliere tutti i dettagli di sistema e hardware di cui abbiamo discusso. Puoi copiare il seguente programma ed eseguirlo nel tuo IDE Python.

# importando i moduli richiesti import platform from datetime import datetime import psutil import os # Prima stamperemo le informazioni di sistema di base # usando il modulo platform print("\n\t\t\t Informazioni di sistema di base\n") print(" [+] Architettura :", piattaforma.architettura()[0]) print("[+] Macchina :", piattaforma.machine()) print("[+] Rilascio del sistema operativo:", piattaforma.release()) print("[+] Nome sistema :",piattaforma.system()) print("[+] Versione sistema operativo :", piattaforma.version()) print("[+] Nodo: " + piattaforma.node()) print("[+] Platform :", platform.platform()) print("[+] Processore :",platform.processor()) # Utilizzo della libreria psutil per ottenere l'ora di avvio del sistema boot_time = datetime.fromtimestamp(psutil.boot_time()) print("[+] System Boot Time :", boot_time) # ottiene il tempo di avvio del sistema dal file uptime nella directory proc con open("/proc/uptime", "r") as f: uptime = f.leggere().diviso(" ")[0].strip() uptime = int(float(uptime)) uptime_hours = uptime // 3600 uptime_minutes = (uptime % 3600) // 60 print("[+] System Uptime : " + str(uptime_hours) + ":" + str( uptime_minutes) + " ore") # ottenendo il numero totale di processi attualmente in esecuzione pids = [] per subdir in os.listdir('/proc'): if subdir.isdigit(): pids.append(subdir) print('Numero totale di processi: 0'.format(len(pids))) # Visualizzazione delle informazioni sulla CPU print("\n\t\t\t Informazioni sulla CPU\n") # Questo codice stamperà il numero di core della CPU presenti print("[+] Numero di cores:", psutil.cpu_count(logical=False)) print("[+] Numero di core totali:", psutil.cpu_count(logical=True)) print("\n") # Questo stamperà la frequenza massima, minima e corrente della CPU cpu_frequency = psutil.cpu_freq() print(f"[+] Frequenza massima: cpu_frequency.massimo:.2fMhz") print(f"[+] Frequenza minima : frequenza_cpu.minimo:.2fMhz") print(f"[+] Frequenza corrente: cpu_frequency.attuale:.2fMhz") print("\n") # Questo stamperà l'utilizzo della CPU per core per i, percentuale in enumerate(psutil.cpu_percent(percpu=True, interval=1)): print(f"[+] Utilizzo CPU del Core i : percentage%") print(f"[+] Utilizzo totale CPU : psutil.cpu_percent()%") # leggendo il file cpuinfo per stampare il nome della # CPU presente con open("/proc/cpuinfo", "r") come f: file_info = f.readlines() cpuinfo = [x.striscia().split(":")[1] for x in file_info if "model name" in x] for index, item in enumerate(cpuinfo): print("[+] Processor " + str(index) + " : " + item ) # scrivere una funzione per convertire i byte in GigaByte def bytes_to_GB(bytes): gb = bytes/(1024*1024*1024) gb = round(gb, 2) return gb # Usando la funzione virtual_memory() restituirà una tupla virtual_memory = psutil.virtual_memory() print("\n\t\t\t Informazioni sulla memoria\n") #Questo stamperà i dettagli della memoria primaria print("[+] Memoria totale presente:", bytes_to_GB(virtual_memory.totale), "Gb") print("[+] Memoria totale disponibile:", bytes_to_GB(virtual_memory.disponibile), "Gb") print("[+] Memoria totale utilizzata:", bytes_to_GB(virtual_memory.utilizzato), "Gb") print("[+] Percentuale utilizzata:", memoria_virtuale.percent, "%") print("\n") # Questo stamperà i dettagli della memoria di swap se disponibile swap = psutil.swap_memory() print(f"[+] Memoria di swap totale :bytes_to_GB(swap.totale)") print(f"[+] Memoria di scambio libera: bytes_to_GB(swap.free)") print(f"[+] Memoria di swap utilizzata: bytes_to_GB(swap.usato)") print(f"[+] Percentuale utilizzata: scambio.percent%") # Raccolta di informazioni sulla memoria dal file meminfo print("\nLettura del file /proc/meminfo: \n") with open("/proc/meminfo", "r") as f: lines = f.readlines() print("[+] " + lines[0].strip()) print("[+] " + righe[1].strip()) # accesso a tutte le partizioni del disco disk_partitions = psutil.disk_partitions() print("\n\t\t\t Informazioni sul disco\n") # visualizza la partizione e le informazioni sull'utilizzo per la partizione in disk_partitions: print("[+] Partition Device : ", partition.dispositivo) print("[+] File System : ", partizione.fstype) print("[+] Punto di montaggio: ", partizione.punto di montaggio) disk_usage = psutil.disk_usage(partizione.punto di montaggio) print("[+] Spazio su disco totale:", bytes_to_GB(disk_usage.totale), "GB") print("[+] Spazio libero su disco:", bytes_to_GB(disk_usage.free), "GB") print("[+] Spazio su disco utilizzato:", bytes_to_GB(disk_usage.utilizzato), "GB") print("[+] Percentuale utilizzata:", disk_usage.percent, "%") # ottiene le statistiche di lettura/scrittura dall'avvio disk_rw = psutil.disk_io_counters() print(f"[+] Lettura totale dall'avvio: bytes_to_GB(disk_rw.read_bytes) GB") print(f"[+] Total Write sice boot : bytes_to_GB(disk_rw.write_bytes) GB") # raccogliendo tutte le interfacce di rete (virtuali e fisiche) dal sistema if_addrs = psutil.net_if_addrs() print("\n\t\t\t Network Information\n") # stampa le informazioni di ogni interfaccia di rete per interface_name, interface_addresses in if_addrs.items(): per l'indirizzo in interface_addresses: print(f"Interface:", interface_name) if str(address.famiglia) == 'IndirizzoFamiglia.AF_INET': print("[+] Indirizzo IP:", indirizzo.indirizzo) print("[+] Netmask :", indirizzo.netmask) print("[+] IP di trasmissione:", indirizzo.trasmissione) elif str(indirizzo.famiglia) == 'IndirizzoFamiglia.AF_PACKET': print("[+] Indirizzo MAC:", indirizzo.indirizzo) print("[+] Netmask :", indirizzo.netmask) print("[+] Broadcast MAC :",indirizzo.broadcast) # ottenere le statistiche di lettura/scrittura della rete dall'avvio net_io = psutil.net_io_counters() print("[+] Totale byte inviati:", bytes_to_GB(net_io.bytes_sent)) print("[+] Total Bytes Received :", bytes_to_GB(net_io.bytes_recv)) # Ottenere le informazioni sulla batteria battery = psutil.sensori_batteria() print("\n\t\t\t Informazioni sulla batteria\n") print("[+] Percentuale batteria:", round(batteria.percent, 1), "%") print("[+] Durata batteria residua:", round(batteria.secsleft/3600, 2), "hr") print("[+] Power Plugged :", batteria.power_plugged)

Eseguendo questo codice, otterremo il seguente output.

uno strumento per estrarre informazioni di sistema e hardware usando python

Se vuoi migliorare il programma o vuoi scaricare il codice, puoi farlo dalla mia pagina Github.

Conclusione

Questo è il tutorial completo sulla raccolta di alcune informazioni interessanti sull'hardware e sul sistema usando Pythonpy. Se hai problemi con la copia del codice, puoi anche trovare il codice sorgente completo nel mio repository Github. Potresti anche voler vedere la nostra guida su come lavorare con il sistema operativo in Python per alcune modifiche più interessanti di Python.

Vulkan per utenti Linux
Con ogni nuova generazione di schede grafiche, vediamo gli sviluppatori di giochi spingere i limiti della fedeltà grafica e avvicinarsi di un passo al...
OpenTTD vs Simutrans
Creare la tua simulazione di trasporto può essere divertente, rilassante ed estremamente allettante. Ecco perché devi assicurarti di provare quanti pi...
Tutorial OpenTTD
OpenTTD è uno dei giochi di simulazione aziendale più popolari in circolazione. In questo gioco, devi creare una meravigliosa attività di trasporto. T...