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() помогает в перечислении набора процессов в системе.
Вывод
Наш код выдаст следующий результат -