Я уверен, что это сделало бы это с помощью функции os.plock (op), но я понятия не имею, как это сделать. Кроме того, если есть лучший способ, я был бы признателен за это. Фрагменты кода очень приветствуются.Как вы делитесь данными между родительским и разветвленным дочерним процессом в Python?
ответ
Subprocess заменяет os.popen, os.system, os.spawn, popen2 и команды. simple example for piping будет:
p1 = Popen(["dmesg"], stdout=PIPE)
p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
output = p2.communicate()[0]
Вы также можете использовать memory mapped file с флагом = MAP_SHARED для общей памяти между процессами.
multiprocessing аннотация как pipes, так и shared memory и обеспечивает интерфейс более высокого уровня. Взятый из документации обработки:
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()
Это почти не зависит от Python! Это классический пример межпроцессного взаимодействия Unix. Одним из хороших вариантов является использование popen()
, чтобы открыть канал между родительским и дочерним процессами и передать данные/сообщения взад и вперед по трубе.
Посмотрите на subprocess
module, который может автоматически настроить необходимые каналы при нерестах дочерних процессов.
У вас есть два варианта: os.popen*
в модуле os
, или вы можете использовать модуль subprocess
с тем же эффектом. В руководстве Python есть довольно документация и примеры для popen и subprocess.
Возьмите взгляд на multiprocessing модуль новые в 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()
- 1. Как можно делиться данными между родительским и разветвленным дочерним процессом в Haskell?
- 2. связь между родительским процессом и дочерним процессом
- 3. Связь между дочерним процессом и родительским процессом
- 4. pipe() между дочерним и родительским процессом
- 5. linux: получение разделов между родительским и разветвленным дочерним слоем
- 6. Как вы делитесь данными между скриптом python и приложением vb.net?
- 7. Попытка понять разветвление и отношения между родительским и дочерним процессом
- 8. Условие взаимоблокировки возникает между дочерним и родительским процессом
- 9. Делитесь данными между службами
- 10. Делитесь данными между usercontrols
- 11. Делитесь данными между устройствами (Swift)
- 12. Трубопроводная связь между дочерним процессом и родительским процессом с использованием pipe()
- 13. Делитесь данными между Spark и Hadoop (Mahout)
- 14. Слабая ссылка между родительским и дочерним классами
- 15. Делитесь данными между активностью и сервисом android
- 16. Пробел между родительским div и дочерним div?
- 17. Делитесь данными между phonegap и inappbrowser
- 18. создание трубы между отцом и дочерним процессом
- 19. Как получить переменные, разделяемые между дочерним и родительским процессом при использовании fork в perl
- 20. Как вы делитесь переменной между двумя процессами в Python?
- 21. Делитесь данными между подпроцессами, которыми управляет супервизор
- 22. Обмен памятью между родительским и дочерним процессом в Solaris (in C)
- 23. Использование MPI_Send и MPI_Recv между родительским и дочерним процессом, созданными с MPI_COMM_SPAWN
- 24. Как передать данные между дочерним и родительским в native-native?
- 25. Делитесь данными тестирования между двумя рельсовыми приложениями
- 26. Делитесь данными между двумя экземплярами QWidget
- 27. maven2: как разделить конфигурацию плагина между родительским и дочерним pom?
- 28. Как получить связь Angular 2 между дочерним и родительским компонентом?
- 29. Управление дочерним процессом
- 30. Переключение между тем же дочерним и родительским в jquery
Вы могли бы отметить значение, массив и классы диспетчера, предоставляемые многопроцессорной, которые позволяют совместное использование данных: http://docs.python.org/library/multiprocessing.html#sharing-state-between-processes – tzot