I am trying to get a basic understanding of this before I create the actual application I need. I recently moved over from 2.7 to 3.3.
A direct copy-paste of this code from the python docs fails, as does a slightly simpler example from here.
This is my code, derived from the second example:
import concurrent.futures
nums = [1,2,3,4,5,6,7,8,9,10]
def f(x):
return x * x
# Make sure the map and function are working
print([val for val in map(f, nums)])
# Test to make sure concurrent map is working
with concurrent.futures.ProcessPoolExecutor() as executor:
for item in executor.map(f, nums):
print(item)
And this is the output:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
Traceback (most recent call last):
File "<string>", line 420, in run_nodebug
File "<module1>", line 13, in <module>
File "C:Python33libconcurrentfutures\_base.py", line 546, in result_iterator
yield future.result()
File "C:Python33libconcurrentfutures\_base.py", line 399, in result
return self.__get_result()
File "C:Python33libconcurrentfutures\_base.py", line 351, in __get_result
raise self._exception
concurrent.futures.process.BrokenProcessPool: A process in the process pool was terminated abruptly while the future was running or pending.
How can I get this code to work as expected? I was hoping the examples would just work out of the box.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…