Используя многопроцессорное объединение рабочих

Это не действительно ярлык, но просто быстрый доступ к системному меню: Alt-space E P

, Если можно использовать мышь, щелкает правой кнопкой по cmd работам окна как вставка, когда я попробовал его.

10
задан Gökhan Sever 19 October 2009 в 02:49
поделиться

2 ответа

Я бы начал с того, чтобы лучше понять, что происходит с рабочим процессом. В модуле multiprocessing, если вам нужно, предусмотрена возможность ведения журнала для своих подпроцессов. Поскольку вы упростили код, чтобы сузить проблему, я бы просто отлаживал с помощью нескольких операторов печати, например так (или вы можете PrettyPrint массив pf ):


def process_all(pf):
   print "PID: ", os.getpid()
   print "Script Dir: ", pf[0]
   print "Script: ", pf[1]
   os.chdir(pf[0])
   call(['postprocessing_saudi', pf[1]])


if __name__ == '__main__':
   pool = Pool(processes=2)
   files, paths = find_sea_files()
   pathfile = [[paths[i],files[i]] for i in range(len(files))]
   pool.map(process_all, pathfile, 1) # Ensure the chunk size is 1
   pool.close()
   pool.join()

Версия Python, которая у меня есть сделал это с помощью 2.6.4.

6
ответ дан 4 December 2019 в 01:57
поделиться

Я могу вспомнить несколько вещей:

1) Вы распечатали файлы пути? Вы уверены, что все они правильно сгенерированы?

a) Я спрашиваю, так как ваш os.walk немного интересен; каталоги. sort () должно быть в порядке, но кажется совершенно необоснованным. os.chdir () вообще не следует использовать; восстановление должно быть в порядке, но в целом вы должны просто добавить root в init.

2) Я видел, как многопроцессорность на python2.6 имеет проблемы с порождением подпорсов из пулов. (Я специально использовал сценарий, использующий многопроцессорность для создания подпроцессов. Эти подпроцессы не могли правильно использовать многопроцессорность (пул заблокирован)). Попробуйте python2.5 с резервным портом многозадачной обработки.

3) Попробуйте модуль cloud.mp picloud (который обертывает многопроцессорность, но обрабатывает пулы немного по-другому) и посмотрите, работает ли это.

Вы бы сделали

cloud.mp.join(cloud.mp.map(process_all, pathfile))

(Отказ от ответственности: я один из разработчиков PiCloud)

восстановление должно быть в порядке, но в целом вы должны просто добавить root в init.

2) Я видел, как многопроцессорность на python2.6 имеет проблемы с порождением подпорсов из пулов. (Я специально использовал сценарий, использующий многопроцессорность для создания подпроцессов. Эти подпроцессы не могли правильно использовать многопроцессорность (пул заблокирован)). Попробуйте python2.5 с резервным портом многозадачной обработки.

3) Попробуйте модуль cloud.mp picloud (который обертывает многопроцессорность, но обрабатывает пулы немного иначе) и посмотрите, работает ли это.

Вы бы сделали

cloud.mp.join(cloud.mp.map(process_all, pathfile))

(Отказ от ответственности: я один из разработчиков PiCloud)

восстановление должно быть в порядке, но в целом вы должны просто добавить root в init.

2) Я видел, как многопроцессорность на python2.6 имеет проблемы с порождением подпорсов из пулов. (В частности, у меня был сценарий, использующий многопроцессорность для создания подпроцессов. Эти подпроцессы не могли правильно использовать многопроцессорность (пул заблокирован)). Попробуйте python2.5 с резервным портом многозадачной обработки.

3) Попробуйте модуль cloud.mp picloud (который обертывает многопроцессорность, но обрабатывает пулы немного по-другому) и посмотрите, работает ли это.

Вы бы сделали

cloud.mp.join(cloud.mp.map(process_all, pathfile))

(Отказ от ответственности: я один из разработчиков PiCloud)

(Я специально использовал сценарий, использующий многопроцессорность для создания подпроцессов. Эти подпроцессы не могли правильно использовать многопроцессорность (пул заблокирован)). Попробуйте python2.5 с резервным портом многозадачной обработки.

3) Попробуйте модуль cloud.mp picloud (который обертывает многопроцессорность, но обрабатывает пулы немного по-другому) и посмотрите, работает ли это.

Вы бы сделали

cloud.mp.join(cloud.mp.map(process_all, pathfile))

(Отказ от ответственности: я один из разработчиков PiCloud)

(В частности, у меня был сценарий, использующий многопроцессорность для создания подпроцессов. Эти подпроцессы не могли правильно использовать многопроцессорность (пул заблокирован)). Попробуйте python2.5 с резервным портом многозадачной обработки.

3) Попробуйте модуль cloud.mp picloud (который обертывает многопроцессорность, но обрабатывает пулы немного по-другому) и посмотрите, работает ли это.

Вы бы сделали

cloud.mp.join(cloud.mp.map(process_all, pathfile))

(Отказ от ответственности: я один из разработчиков PiCloud)

3
ответ дан 4 December 2019 в 01:57
поделиться
Другие вопросы по тегам:

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