Несколько лет назад я советовал студенту, который делал модели нашей солнечной системы и систем экзопланет в 2D и 3D. См. http://resources.modelling4all.org/libraries/orbits/documentation
. Обратите внимание, что модели находятся в Behavior Composer, и код NetLogo можно получить, нажав на вкладку «Загрузка» .
Используйте второй параметр для split
который указывает максимальное количество полей для разделения строки на. Я предполагаю, что можно найти число путем подсчета количества полей в первой строке, т.е. заголовков столбцов.
ps = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE).communicate()[0]
processes = ps.split('\n')
# this specifies the number of splits, so the splitted lines
# will have (nfields+1) elements
nfields = len(processes[0].split()) - 1
for row in processes[1:]:
print row.split(None, nfields)
Почему Вы не используете PSI вместо этого? PSI предоставляет информацию о процессе о Linux и других вариантах Unix.
import psi.process
for p in psi.process.ProcessTable().values(): …
maxsplit
дополнительный аргумент к split
метод мог бы помочь Вам:
sep.split.(row, maxsplit=42)
Ознакомьтесь с пакетом python.psutils .
psutil.process_iter
возвращает генератор, который можно использовать для перебора всех процессов.
p.cmdline
- это список аргументов cmdline каждого объекта Process, разделенных так, как вы хотите.
Вы можете создать словарь pid vs (pid, cmdline, path)
с помощью всего одной строки, а затем использовать его как хотите.
pid_dict = dict([(p.pid, dict([('pid',p.pid), ('cmdline',p.cmdline), ('path',p.path)]))
for p in psutil.process_iter()]))