例子:

image = Image.open('foo.png')
# releases the GIL?
resized = image.resize((800, 600), Image.ANTIALIAS)
# reacquires the GIL?

显然变量赋值需要保存 GIL,但很难将其分成两行。 :)

如果有两个线程进行图像大小调整,这些调整大小可以在两个不同的内核上运行吗?

最佳答案

查看 1.1.7 的源代码,它似乎没有为 _resize 发布 GIL。

释放 GIL 的函数似乎是:

PyImaging_CreateWindowWin32 (createwindow on Win32)
PyImaging_EventLoopWin32 (eventloop on Win32)
pyCMSdoTransform (apply)
_buildTransform (buildTransform)
_buildProofTransform (buildProofTransform)
_encode_to_file (encode_to_file)

关于python - PIL resize() 是否持有 GIL?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13242221/

10-12 18:31