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 -