Привет У меня есть следующий код:Python выполнить subprocess.call внутри карты
import sys
import multiprocessing as mp
def create_parser():
from argparse import ArgumentParser, FileType
ap = ArgumentParser()
ap.add_argument('infile', type=FileType('r'),
help="file with shell commands to execute")
ap.add_argument('-n', '--ncpu', type=int, default=0,
help="Number of CPUs to use (default: %(default)s: all CPUs)")
return ap
def cpus_to_use(ncpu):
return ncpu if ncpu else mp.cpu_count()
if __name__ == '__main__':
from subprocess import call
ap = create_parser()
args = ap.parse_args(sys.argv[1:])
ncpu = cpus_to_use(args.ncpu)
if args.infile:
# Read commands from already open file and close
commands = [c for c in args.infile.read().split('\n') if c]
args.infile.close()
# Create a pool and map run_cmd to the shell commands
pool = mp.Pool(processes=ncpu)
pool.map(call, commands)
Я в основном импортировать текстовый файл из командной строки, которая имеет для каждой строки конкретная команда для выполнения (что я m пытается распараллелить). Я использую Python 2.7.12, и вывод print (command) выглядит отлично.
Я подозреваю, что есть ошибка в последней строке синтаксиса строки, как я получаю: Файл «run_parallel.py», строка 47, в pool.map (вызов, команды) Файл «/ главная/ЭСТ /anaconda2/lib/python2.7/multiprocessing/pool.py ", строка 251, на карте return self.map_async (func, iterable, chunksize) .get() Файл«/home/ect/anaconda2/lib/python2 0,7/многопроцессорная/pool.py», строка 567, в прибудете повышают self._value
Спасибо
благодарит за ваш ответ! – Francesco
это немного не по теме, но мне не удалось запустить трактат, как в «учебнике» на sburns ... почему-то probtrackx никуда не денется, поэтому, если вы найдете какие-либо другие ошибки в коде/скрипты на веб-сайте, пожалуйста, дайте мне знать, я сделаю то же самое! – mrburnst