CRC32, вероятно, достаточно хорош, хотя существует маленькое шанс, Вы могли бы получить коллизию, такую, что файл, который был изменен, мог бы быть похожим на него, не был то, потому что эти две версии генерируют ту же контрольную сумму. Для предотвращения этой возможности, я поэтому предложил бы использовать MD5, который легко будет достаточно быстр, и возможности появления коллизии уменьшается до точки, где это - почти бесконечно малая величина.
, Поскольку другие сказали с большим количеством маленьких файлов, Ваше реальное узкое место производительности будет вводом-выводом, таким образом, проблема имеет дело с этим. Если Вы развесите еще несколько деталей, то кто-то, вероятно, предложит способ уладить это также.
В Linux самым простым решением, вероятно, является использование внешней команды ps
:
>>> import os
>>> data = [(int(p), c) for p, c in [x.rstrip('\n').split(' ', 1) \
... for x in os.popen('ps h -eo pid:1,command')]]
В других системах вам, возможно, придется изменить параметры на ps
.
Тем не менее, вы можете запустить man
на pgrep
и pkill
.
Почему Python?
Вы можете напрямую использовать killall
в имени процесса.
В Linux с подходящей последней версией Python, которая включает модуль подпроцесса
:
from subprocess import Popen, PIPE
process = Popen(['ps', '-eo' ,'pid,args'], stdout=PIPE, stderr=PIPE)
stdout, notused = process.communicate()
for line in stdout.splitlines():
pid, cmdline = line.split(' ', 1)
#Do whatever filtering and processing is needed
Вам может потребоваться немного изменить команду ps в зависимости от ваших конкретных потребностей.