python使用append函数无法添加列表元素

python使用append函数无法添加列表元素

定义了全局变量X,Y。希望可以利用多进程快速的把我想要的信息append进同一个列表。列表在最后print出来之前都是有数据的,但是print出来的却是空列表。

python">from PIL import Image,ImageDraw,ImageFont

import os,time,multiprocessing

global x

global y

x,y=[],[]

def sy(path):

image = Image.open(path)

layer = image.convert('RGBA')

x.append(layer.size[0])

y.append(layer.size[1])

print(x,y) #看看x和y是不是添加元素为空

def find_file(path):

info=[]

for i in os.listdir(path):

this_path = os.path.join(path, i)

if os.path.isfile(this_path):

info.append(this_path)

else:

pass

return info

if __name__ == '__main__':

imgpath=find_file(input('目标文件夹: '))

pool=multiprocessing.Pool(process=1)

#当process=4时,发现运行变快了,但是有很多个图片的信息没append到列表里.如果是1就可以全部append到。

pool.map(sy,imgpath)

pool.close()

pool.join()

# x.sort() 准备比较大小,取所有图片X,Y最小值

# y.sort()

# print(x[0],y[0])

print(x,y)

运行输出如下:

[717] [709]

[717, 640] [709, 640]

[717, 640, 747] [709, 640, 747]

[717, 640, 747, 672] [709, 640, 747, 672]

[717, 640, 747, 672, 792] [709, 640, 747, 672, 792]

[717, 640, 747, 672, 792, 744] [709, 640, 747, 672, 792, 744]

[717, 640, 747, 672, 792, 744, 738] [709, 640, 747, 672, 792, 744, 738]

[717, 640, 747, 672, 792, 744, 738, 792] [709, 640, 747, 672, 792, 744, 738, 792]

[] []

可以看见最后的列表忽然变成空的了,不知道为什么。另外就是多进程的时候,处理会遗漏很多图片。相比单进程的时候少了很多要append的图片信息。
求大神指导下怎么改正。原来的虽然可以正常用,但是图片数量多的话,处理速度实在太慢,所以希望可以多进程加快处理速度。谢谢


回答:

不同进程中的x,y不是同一个啊,结尾的print(x,y)打印出来的是主进程中的x,y,这个是空的,有数字的是multiprocessing启动的新进程里的x,y

以上是 python使用append函数无法添加列表元素 的全部内容, 来源链接: utcz.com/p/937653.html

回到顶部