Python Forensics - Поддержка многопроцессорности

Специалистам-криминалистам обычно сложно применять цифровые решения для анализа огромного количества цифровых доказательств в отношении обычных преступлений. Большинство инструментов цифрового расследования являются однопоточными и могут выполнять только одну команду за раз.

В этой главе мы сосредоточимся на многопроцессорных возможностях Python, которые могут быть связаны с общими проблемами криминалистики.

Многопроцессорность

Многопроцессорность определяется как способность компьютерной системы поддерживать более одного процесса. Операционные системы, поддерживающие многопроцессорность, позволяют запускать несколько программ одновременно.

Существуют различные типы многопроцессорной обработки, например symmetric и asymmetric processing. Следующая диаграмма относится к симметричной многопроцессорной системе, которой обычно следуют при судебно-медицинской экспертизе.

пример

Следующий код показывает, как различные процессы перечислены внутри в программировании 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."

Здесь функция list_append() помогает в перечислении набора процессов в системе.

Вывод

Наш код выдаст следующий результат -