использовать многопроцессорность в качестве локального IPC - PullRequest
4 голосов
/ 11 декабря 2011

Я рассматриваю возможность использования пакета многопроцессорной обработки Python для обмена сообщениями между локальными программами Python.

Это похоже на правильный путь, ЕСЛИ:

  • Программы всегда будут запускаться локально на одном и том же компьютере (и в одном и том же экземпляре ОС)
  • Реализация программ останется в Python
  • Скорость важна

Возможно ли, если процессы python были запущены пользователем независимо, то есть один не породил другой?

Как?
Документы , кажется, дают примеры только случаев, когда один порождает другой.

Ответы [ 2 ]

1 голос
/ 12 декабря 2011
1 голос
/ 11 декабря 2011

Программы всегда будут запускаться локально на одном и том же компьютере (и в одном и том же экземпляре ОС)

Многопроцессорная обработка позволяет иметь удаленный параллелизм .

Реализация программ останется в Python

Да и нет.Вы можете обернуть другую команду в функцию Python.Это будет работать, например:

from multiprocessing import Process
import subprocess

def f(name):
    subprocess.call(["ls", "-l"])

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

Скорость важна

Это зависит от ряда факторов:

  • скольконакладные расходы приведут к координации между процессами?
  • сколько ядер у вашего процессора?
  • сколько дискового ввода-вывода требуется каждому процессу?Работают ли они на одном физическом диске?
  • ...

Возможно ли, если процессы python запускались пользователем независимо друг от друга, т. Е. Один из них не появлялсядругой?

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

HTH!

...