Python Forensics - Prise en charge du multitraitement

Les médecins légistes ont normalement du mal à appliquer des solutions numériques pour analyser les montagnes de preuves numériques dans les crimes de droit commun. La plupart des outils d'enquête numériques sont à thread unique et ne peuvent exécuter qu'une seule commande à la fois.

Dans ce chapitre, nous nous concentrerons sur les capacités de multitraitement de Python, qui peuvent être liées aux défis médico-légaux courants.

Multitraitement

Le multitraitement est défini comme la capacité du système informatique à prendre en charge plus d'un processus. Les systèmes d'exploitation qui prennent en charge le multitraitement permettent à plusieurs programmes de s'exécuter simultanément.

Il existe différents types de multitraitement tels que symmetric et asymmetric processing. Le diagramme suivant fait référence à un système multitraitement symétrique qui est généralement suivi dans les enquêtes médico-légales.

Exemple

Le code suivant montre comment différents processus sont répertoriés en interne dans la programmation 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."

Ici, la fonction list_append() aide à répertorier l'ensemble des processus dans le système.

Production

Notre code produira la sortie suivante -