Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """
- Запускается parent.py. Child.py выступает в роли аргумента command, который передается в запускаемый процесс. У этого процесса есть стандартный вход, куда мы передаем два аргумента – поисковое слово и имя файла. Мы запустим два экземпляра программы child.py, каждый экземпляр будет искать слово word в своем файле – это будут файлы исходников самих программ.
- """
- """
- parent.py
- """
- import os
- import subprocess
- import sys
- child = os.path.abspath('child.py') #путь к запускаемому файлу
- word = 'wordcount' #слово которое будем искать и передвавать child(ам) через pipe
- file = ['parent.py', 'child.py'] #файлы, в каждом из котороых будут искать child(ы)
- pipes = []
- for i in range(0, len(file)):
- command = [sys.executable, child]
- pipe = subprocess.Popen(command, stdin=subprocess.PIPE) #создание процесса
- pipes.append(pipe)
- pipe.stdin.write(word.encode("utf8") + b"\n") #передаем через pipe шаблон word для child(ов)
- pipe.stdin.write(file[i].encode("utf8") + b"\n") #пишем через pipe имя файла в которых будем искать word
- pipe.stdin.close()
- while pipes:
- pipe = pipes.pop() #запускаем процессы
- pipe.wait()
- """
- child.py
- """
- import sys
- word = sys.stdin.readline().strip() #получаем поисковое слово с консоли
- filename = sys.stdin.readline().strip() #получаем имя файла в котором надо производить поиск
- try:
- with open(filename, 'r') as file: #открываем файл
- while True:
- current = file.read() #читаем файл
- if not current:
- break
- if (word in current):
- print("find: {0} {1}".format(filename, word)) #если слово word в файле, форматируем и выводим результат
- except:
- pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement