This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author pitrou
Recipients dlukes, docs@python, pitrou
Date 2017-12-19.14:37:21
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1513694242.4.0.213398074469.issue32306@psf.upfronthosting.co.za>
In-reply-to
Content
Hi David,

> what happens behind the scenes is that the call blocks until all results are computed and only then starts yielding them.

The current implementation of the Executor.map() generator is:

        def result_iterator():
            try:
                # reverse to keep finishing order
                fs.reverse()
                while fs:
                    # Careful not to keep a reference to the popped future
                    if timeout is None:
                        yield fs.pop().result()
                    else:
                        yield fs.pop().result(end_time - time.time())
            finally:
                for future in fs:
                    future.cancel()


So it seems to me that results are yielded as soon as they arrive (provided they arrive in the right order).
History
Date User Action Args
2017-12-19 14:37:22pitrousetrecipients: + pitrou, docs@python, dlukes
2017-12-19 14:37:22pitrousetmessageid: <1513694242.4.0.213398074469.issue32306@psf.upfronthosting.co.za>
2017-12-19 14:37:21pitroulinkissue32306 messages
2017-12-19 14:37:21pitroucreate