Python: установить имя процесса из мультипроцессинга. Процесс - PullRequest
0 голосов
/ 26 июня 2019

Можно ли задать имя процессов, порожденных мультипроцессингом. Процесс или биллиард. Процесс. Что-то вроде:

import billiard
for d in list:
    processes.append(billiard.Process(target=evaluate))
for p in processes:
    p.name =  'someID'
    p.start()

Я хочу найти эти конкретные процессы впоследствии, когда они работают с:

import psutil
for proc in psutil.process_iter():
    if proc.name() == 'someID':
        print(proc)

1 Ответ

1 голос
/ 26 июня 2019

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

Python 3.6 Официальные документы продемонстрировали очень хороший способ поиграться с идентификаторами процессов.Вот фрагмент из документации

from multiprocessing import Process
import os

def info(title):
    print(title)
    print('module name:', __name__)
    print('parent process:', os.getppid())
    print('process id:', os.getpid())

def f(name):
    info('function f')
    print('hello', name)

if __name__ == '__main__':
    info('main line')
    p = Process(target=f, args=('bob',))
    p.start()
    p.join()

Также я вижу, Celery в ваших тегах, если вы собираетесь играть с параллельными процессами, я бы порекомендовал Supervisord.Дает вам очень хороший контроль над процессами, если у вас небольшой проект.

...