Как Вы обмениваетесь данными между родительским и разветвленным дочерним процессом в Python?

Я добавил этот код для работы. я знаю, что это не настоящее решение, но пока работает.

tableView.scrollToRow(at: IndexPath(row: newsList.count - myPageSize, section: 0), at: .bottom, animated: false  )
12
задан Brian Tompsett - 汤莱恩 23 October 2015 в 18:18
поделиться

4 ответа

Подпроцесс заменяет os.popen, os.system, os.spawn, popen2 и команды. Простой пример для передачи по каналу был бы:

p1 = Popen(["dmesg"], stdout=PIPE)
p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
output = p2.communicate()[0]

Вы могли также использовать файл с отображенной памятью с flag=MAP_SHARED для общей памяти между процессами.

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

from multiprocessing import Process, Pipe

def f(conn):
    conn.send([42, None, 'hello'])
    conn.close()

if __name__ == '__main__':
    parent_conn, child_conn = Pipe()
    p = Process(target=f, args=(child_conn,))
    p.start()
    print parent_conn.recv()   # prints "[42, None, 'hello']"
    p.join()
14
ответ дан 2 December 2019 в 05:16
поделиться

Смотрите на многопроцессорный модуль, новый в python 2.6 (также доступный для более ранних версий pyprocessing

Вот является пример от иллюстрирования документов передающей информацией с помощью канала, например:

from multiprocessing import Process, Pipe

def f(conn):
    conn.send([42, None, 'hello'])
    conn.close()

if __name__ == '__main__':
    parent_conn, child_conn = Pipe()
    p = Process(target=f, args=(child_conn,))
    p.start()
    print parent_conn.recv()   # prints "[42, None, 'hello']"
    p.join()
8
ответ дан 2 December 2019 в 05:16
поделиться

Это в значительной степени независимо от Python! Это - классический пример межпроцессного взаимодействия Unix. Один хороший вариант состоит в том, чтобы использовать popen() открыть канал между родительскими и дочерними процессами и данные/сообщения передачи назад и вперед вдоль канала.

Смотрите на subprocess модуль, который может настроить необходимые каналы автоматически при порождении дочерних процессов.

5
ответ дан 2 December 2019 в 05:16
поделиться

У Вас есть две опции: os.popen* в os модуль, или можно использовать subprocess модуль к тому же эффекту. Руководство Python имеет симпатичную документацию и примеры для popen и подпроцесса.

2
ответ дан 2 December 2019 в 05:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: