Process list of async tasks immediately upon each task's completion
How can I process the results of a list of async
tasks immediately as a task is completed?
For instance, the following should display whichever page loads first:
urls = ['stackoverflow.com', 'google.com']
tasks = [asyncio.create_task(fetch_page(x)) for x in urls]
for page in asyncio.give_me_results_ASAP(tasks):
print(page.url)
Since google loads faster, I'd like it to print:
google.com
stackoverflow.com
python asynchronous
add a comment |
How can I process the results of a list of async
tasks immediately as a task is completed?
For instance, the following should display whichever page loads first:
urls = ['stackoverflow.com', 'google.com']
tasks = [asyncio.create_task(fetch_page(x)) for x in urls]
for page in asyncio.give_me_results_ASAP(tasks):
print(page.url)
Since google loads faster, I'd like it to print:
google.com
stackoverflow.com
python asynchronous
may be simple way is to add the print inside fetch page?
– Bear Brown
Nov 22 '18 at 6:24
Can you explain your priorities a bit more? Is the order the most important thing to you, or the immediacy? If the immediacy is the primary goal, why is it the goal? Would you be open to solutions that get the work done faster even if they sacrifice ordering?
– user2357112
Nov 22 '18 at 6:27
@BearBrown That's a good point. Though I suppose I had some sort of asynchronous iterator in mind. (That way, I cantee
out the results in a thread-safe manner but also process them immediately.)
– Mateen Ulhaq
Nov 22 '18 at 6:27
@user2357112 Immediacy. Ordering doesn't matter.
– Mateen Ulhaq
Nov 22 '18 at 6:28
add a comment |
How can I process the results of a list of async
tasks immediately as a task is completed?
For instance, the following should display whichever page loads first:
urls = ['stackoverflow.com', 'google.com']
tasks = [asyncio.create_task(fetch_page(x)) for x in urls]
for page in asyncio.give_me_results_ASAP(tasks):
print(page.url)
Since google loads faster, I'd like it to print:
google.com
stackoverflow.com
python asynchronous
How can I process the results of a list of async
tasks immediately as a task is completed?
For instance, the following should display whichever page loads first:
urls = ['stackoverflow.com', 'google.com']
tasks = [asyncio.create_task(fetch_page(x)) for x in urls]
for page in asyncio.give_me_results_ASAP(tasks):
print(page.url)
Since google loads faster, I'd like it to print:
google.com
stackoverflow.com
python asynchronous
python asynchronous
asked Nov 22 '18 at 6:23
Mateen UlhaqMateen Ulhaq
11.5k114793
11.5k114793
may be simple way is to add the print inside fetch page?
– Bear Brown
Nov 22 '18 at 6:24
Can you explain your priorities a bit more? Is the order the most important thing to you, or the immediacy? If the immediacy is the primary goal, why is it the goal? Would you be open to solutions that get the work done faster even if they sacrifice ordering?
– user2357112
Nov 22 '18 at 6:27
@BearBrown That's a good point. Though I suppose I had some sort of asynchronous iterator in mind. (That way, I cantee
out the results in a thread-safe manner but also process them immediately.)
– Mateen Ulhaq
Nov 22 '18 at 6:27
@user2357112 Immediacy. Ordering doesn't matter.
– Mateen Ulhaq
Nov 22 '18 at 6:28
add a comment |
may be simple way is to add the print inside fetch page?
– Bear Brown
Nov 22 '18 at 6:24
Can you explain your priorities a bit more? Is the order the most important thing to you, or the immediacy? If the immediacy is the primary goal, why is it the goal? Would you be open to solutions that get the work done faster even if they sacrifice ordering?
– user2357112
Nov 22 '18 at 6:27
@BearBrown That's a good point. Though I suppose I had some sort of asynchronous iterator in mind. (That way, I cantee
out the results in a thread-safe manner but also process them immediately.)
– Mateen Ulhaq
Nov 22 '18 at 6:27
@user2357112 Immediacy. Ordering doesn't matter.
– Mateen Ulhaq
Nov 22 '18 at 6:28
may be simple way is to add the print inside fetch page?
– Bear Brown
Nov 22 '18 at 6:24
may be simple way is to add the print inside fetch page?
– Bear Brown
Nov 22 '18 at 6:24
Can you explain your priorities a bit more? Is the order the most important thing to you, or the immediacy? If the immediacy is the primary goal, why is it the goal? Would you be open to solutions that get the work done faster even if they sacrifice ordering?
– user2357112
Nov 22 '18 at 6:27
Can you explain your priorities a bit more? Is the order the most important thing to you, or the immediacy? If the immediacy is the primary goal, why is it the goal? Would you be open to solutions that get the work done faster even if they sacrifice ordering?
– user2357112
Nov 22 '18 at 6:27
@BearBrown That's a good point. Though I suppose I had some sort of asynchronous iterator in mind. (That way, I can
tee
out the results in a thread-safe manner but also process them immediately.)– Mateen Ulhaq
Nov 22 '18 at 6:27
@BearBrown That's a good point. Though I suppose I had some sort of asynchronous iterator in mind. (That way, I can
tee
out the results in a thread-safe manner but also process them immediately.)– Mateen Ulhaq
Nov 22 '18 at 6:27
@user2357112 Immediacy. Ordering doesn't matter.
– Mateen Ulhaq
Nov 22 '18 at 6:28
@user2357112 Immediacy. Ordering doesn't matter.
– Mateen Ulhaq
Nov 22 '18 at 6:28
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53424973%2fprocess-list-of-async-tasks-immediately-upon-each-tasks-completion%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53424973%2fprocess-list-of-async-tasks-immediately-upon-each-tasks-completion%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
may be simple way is to add the print inside fetch page?
– Bear Brown
Nov 22 '18 at 6:24
Can you explain your priorities a bit more? Is the order the most important thing to you, or the immediacy? If the immediacy is the primary goal, why is it the goal? Would you be open to solutions that get the work done faster even if they sacrifice ordering?
– user2357112
Nov 22 '18 at 6:27
@BearBrown That's a good point. Though I suppose I had some sort of asynchronous iterator in mind. (That way, I can
tee
out the results in a thread-safe manner but also process them immediately.)– Mateen Ulhaq
Nov 22 '18 at 6:27
@user2357112 Immediacy. Ordering doesn't matter.
– Mateen Ulhaq
Nov 22 '18 at 6:28