Python Forensics 简明教程

Python Forensics - Multiprocessing Support

法医专家通常发现难以应用数字解决方案来分析普通犯罪中的大量数字证据。大多数数字调查工具都是单线程的,它们一次只能执行一个命令。

在本章中,我们将重点介绍 Python 的多处理能力,它与常见的取证挑战相关。

Multiprocessing

多处理被定义为计算机系统支持多个进程的能力。支持多处理的操作系统使多个程序能够同时运行。

有多种多处理类型,如 symmetricasymmetric processing 。下图指的是在取证调查中通常遵循的对称多处理系统。

multiprocessing

Example

以下代码显示了在 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() 有助于列出系统中的进程集。

Output

我们的代码将生成以下输出:

multiprocessing support output