Вот пример кода: мой код в основном создает 128-битное изображение в нескольких папках, но до этого он работал медленно. поэтому я реализовал многопроцессорность, но код не работает.
def ProcessLevel(level, stopLevel = 0):
global x,x1Up
xFolders = os.listdir(str(level))
if not os.path.exists(str(level-1)):
os.makedirs(str(level-1))
for x in xFolders:
print(str(level) + "/" + x)
yFiles = os.listdir(str(level) + "/" + x)
print(yFiles)
x1Up = str(int(int(x) / 2))
if not os.path.exists(str(level-1) + "/" + x1Up):
os.makedirs(str(level-1) + "/" + x1Up)
pool = Pool(4)
h = str
pool.map(create_thumbnail,[(h) for size in yFiles])
print(x1Up)
pool.close()
pool.join()
if level > stopLevel + 1:
return ProcessLevel(level - 1, stopLevel)
else:
return True
ProcessLevel(14)
Выше приведена основная функция, в которой вызывается многопроцессорность, и есть еще одна функция для создания эскиза
def create_thumbnail(yFile):
print (yFile)
y = yFile.split(".")[0]
print(y)
y1Up = str(int(int(y) / 2))
ProcessLevel()
im = Image.open(str(level) + "/" + x + "/" + yFile)
im.thumbnail((128,128))
parent = None
try:
parent = Image.open(str(level - 1) + "/" + x1Up + "/" + y1Up + ".png")
except:
parent = Image.new("RGBA", (256, 256), (256, 0, 256, 256))
xOffset = 0
yOffset = 0
if int(x) & 1:
xOffset = 128
if int(y) & 1:
yOffset = 128
parent.paste(im, (xOffset, yOffset, xOffset + 128, yOffset + 128))
parent.save(str(level - 1) + "/" + x1Up + "/" + y1Up + ".png")
end = timer()
print(end - start) # Time in seconds, e.g. 5.38091952400282