Python Forensics - obsługa wielu procesów
Specjalistom medycyny sądowej zwykle trudno jest zastosować rozwiązania cyfrowe do analizy gór cyfrowych dowodów w pospolitych przestępstwach. Większość cyfrowych narzędzi dochodzeniowych jest jednowątkowych i mogą wykonywać tylko jedno polecenie naraz.
W tym rozdziale skupimy się na możliwościach przetwarzania wieloprocesowego w Pythonie, które mogą odnosić się do typowych wyzwań kryminalistycznych.
Wieloprocesowość
Wieloprocesorowość definiuje się jako zdolność systemu komputerowego do obsługi więcej niż jednego procesu. Systemy operacyjne obsługujące przetwarzanie wieloprocesowe umożliwiają jednoczesne działanie kilku programów.
Istnieją różne typy przetwarzania wieloprocesowego, takie jak symmetric i asymmetric processing. Poniższy diagram odnosi się do symetrycznego systemu przetwarzania wieloprocesowego, który jest zwykle stosowany w dochodzeniach kryminalistycznych.
Przykład
Poniższy kod pokazuje, jak różne procesy są wyświetlane wewnętrznie w programowaniu w języku Python.
import random
import multiprocessing
def list_append(count, id, out_list):
#appends the count of number of processes which takes place at a time
for i in range(count):
out_list.append(random.random())
if __name__ == "__main__":
size = 999
procs = 2
# Create a list of jobs and then iterate through
# the number of processes appending each process to
# the job list
jobs = []
for i in range(0, procs):
out_list = list() #list of processes
process1 = multiprocessing.Process(
target = list_append, args = (size, i, out_list))
# appends the list of processes
jobs.append(process)
# Calculate the random number of processes
for j in jobs:
j.start() #initiate the process
# After the processes have finished execution
for j in jobs:
j.join()
print "List processing complete."
Tutaj funkcja list_append() pomaga w wylistowaniu zbioru procesów w systemie.
Wynik
Nasz kod wygeneruje następujący wynik -