У вас проблема с контекстными областями. Попробуйте переместить for r in results:
петлю внутри with
блока:
with Pool(5) as pool:
results = pool.imap_unordered(func, y)
for r in results:
print(r)
это отлично работает.
В качестве альтернативы, вы можете просто использовать Pool.map
from multiprocessing import Pool
def func(x):
return x ** 2
if __name__ == '__main__':
y = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
with Pool(5) as pool:
results = pool.map(func, y)
for r in results:
print(r)
который печатает
1
4
9
16
25
36
49
64
81
100