Я смотрел на подобные вопросы, особенно этот ответ. Моя ситуация немного отличается, поэтому задаю вопрос.
import os
import multiprocessing as mp
def fun1(str1):
#function def
if __name__ == '__main__':
pl1 = mp.Pool(processes=2)
pl2 = mp.Pool(processes=2)
for (d1,d2,d3) in os.walk('dirname'):
for d4 in d2:
pl1.map(fun1,d4)
for d5 in d3:
pl2 .map(fun1,d5)
#
Я получаю имена файлов и каталогов в виде строк и передаю их fun1()
. Но проблема в том, что если я использую pl1.map(fun1,d4)
, похоже, что python отделяет каждый символ строки и передает отдельный символ в fun1()
. Я хочу, чтобы целые строки d4,d5
передавались на fun1()
и параллельно, чтобы сократить время выполнения. Я создал 2 пула pl1,pl2
, чтобы их можно было использовать отдельно в цикле for
верхнего уровня без каких-либо проблем.
Есть идеи, как решить эту проблему?