How to pass args and kwargs to multiprocessing Pool?





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







-1















If I have the following function:



def foo(a, b, c=2, d=6):
return a + b + c + d


and I want to parallelize with multiprocessing.



How can I pass the following arguments 1, 2, d=10? i.e. 2 args and 1 kwarg?



I saw this post, but it does not seem to make it actually parallel. Another possibly useful example was provided here, but it is hard to untangle.










share|improve this question




















  • 3





    It's all clearly documented. I doubt you can get a better answer than just reading the docs in this case.

    – wim
    Jan 3 at 21:23


















-1















If I have the following function:



def foo(a, b, c=2, d=6):
return a + b + c + d


and I want to parallelize with multiprocessing.



How can I pass the following arguments 1, 2, d=10? i.e. 2 args and 1 kwarg?



I saw this post, but it does not seem to make it actually parallel. Another possibly useful example was provided here, but it is hard to untangle.










share|improve this question




















  • 3





    It's all clearly documented. I doubt you can get a better answer than just reading the docs in this case.

    – wim
    Jan 3 at 21:23














-1












-1








-1








If I have the following function:



def foo(a, b, c=2, d=6):
return a + b + c + d


and I want to parallelize with multiprocessing.



How can I pass the following arguments 1, 2, d=10? i.e. 2 args and 1 kwarg?



I saw this post, but it does not seem to make it actually parallel. Another possibly useful example was provided here, but it is hard to untangle.










share|improve this question
















If I have the following function:



def foo(a, b, c=2, d=6):
return a + b + c + d


and I want to parallelize with multiprocessing.



How can I pass the following arguments 1, 2, d=10? i.e. 2 args and 1 kwarg?



I saw this post, but it does not seem to make it actually parallel. Another possibly useful example was provided here, but it is hard to untangle.







python python-3.x multiprocessing






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 3 at 21:20









martineau

70.2k1092186




70.2k1092186










asked Jan 3 at 21:17









NewskoolerNewskooler

64521128




64521128








  • 3





    It's all clearly documented. I doubt you can get a better answer than just reading the docs in this case.

    – wim
    Jan 3 at 21:23














  • 3





    It's all clearly documented. I doubt you can get a better answer than just reading the docs in this case.

    – wim
    Jan 3 at 21:23








3




3





It's all clearly documented. I doubt you can get a better answer than just reading the docs in this case.

– wim
Jan 3 at 21:23





It's all clearly documented. I doubt you can get a better answer than just reading the docs in this case.

– wim
Jan 3 at 21:23












1 Answer
1






active

oldest

votes


















1














How about:



import multiprocessing

def foo(a, b, c=2, d=6):
return a + b + c + d

def foo_callback(result):
print(result)

def foo_error(error):
raise error

pool = multiprocessing.Pool()

for (a, b, c, d) in ((1, 2, 3, 4),
(2, 4, 6, 8),
(3, 6, 9, 12)):
pool.apply_async(
foo,
args=(a, b),
kwds={"c":c, "d":d},
callback=foo_callback,
error_callback=foo_error
)
pool.close()
pool.join()


Which prints:



10
20
30

Process finished with exit code 0


I guess that you want to pass the kwds as a dict. The keys need to be strings.






share|improve this answer
























  • How can I get rid of the loop and not pass c as a parameter?

    – Newskooler
    Jan 4 at 15:08











  • Also, all the results are not in a list as they usually are with map, which is confusing as well. Could you please elaborate on the usage of this?

    – Newskooler
    Jan 4 at 15:11












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
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54029931%2fhow-to-pass-args-and-kwargs-to-multiprocessing-pool%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









1














How about:



import multiprocessing

def foo(a, b, c=2, d=6):
return a + b + c + d

def foo_callback(result):
print(result)

def foo_error(error):
raise error

pool = multiprocessing.Pool()

for (a, b, c, d) in ((1, 2, 3, 4),
(2, 4, 6, 8),
(3, 6, 9, 12)):
pool.apply_async(
foo,
args=(a, b),
kwds={"c":c, "d":d},
callback=foo_callback,
error_callback=foo_error
)
pool.close()
pool.join()


Which prints:



10
20
30

Process finished with exit code 0


I guess that you want to pass the kwds as a dict. The keys need to be strings.






share|improve this answer
























  • How can I get rid of the loop and not pass c as a parameter?

    – Newskooler
    Jan 4 at 15:08











  • Also, all the results are not in a list as they usually are with map, which is confusing as well. Could you please elaborate on the usage of this?

    – Newskooler
    Jan 4 at 15:11
















1














How about:



import multiprocessing

def foo(a, b, c=2, d=6):
return a + b + c + d

def foo_callback(result):
print(result)

def foo_error(error):
raise error

pool = multiprocessing.Pool()

for (a, b, c, d) in ((1, 2, 3, 4),
(2, 4, 6, 8),
(3, 6, 9, 12)):
pool.apply_async(
foo,
args=(a, b),
kwds={"c":c, "d":d},
callback=foo_callback,
error_callback=foo_error
)
pool.close()
pool.join()


Which prints:



10
20
30

Process finished with exit code 0


I guess that you want to pass the kwds as a dict. The keys need to be strings.






share|improve this answer
























  • How can I get rid of the loop and not pass c as a parameter?

    – Newskooler
    Jan 4 at 15:08











  • Also, all the results are not in a list as they usually are with map, which is confusing as well. Could you please elaborate on the usage of this?

    – Newskooler
    Jan 4 at 15:11














1












1








1







How about:



import multiprocessing

def foo(a, b, c=2, d=6):
return a + b + c + d

def foo_callback(result):
print(result)

def foo_error(error):
raise error

pool = multiprocessing.Pool()

for (a, b, c, d) in ((1, 2, 3, 4),
(2, 4, 6, 8),
(3, 6, 9, 12)):
pool.apply_async(
foo,
args=(a, b),
kwds={"c":c, "d":d},
callback=foo_callback,
error_callback=foo_error
)
pool.close()
pool.join()


Which prints:



10
20
30

Process finished with exit code 0


I guess that you want to pass the kwds as a dict. The keys need to be strings.






share|improve this answer













How about:



import multiprocessing

def foo(a, b, c=2, d=6):
return a + b + c + d

def foo_callback(result):
print(result)

def foo_error(error):
raise error

pool = multiprocessing.Pool()

for (a, b, c, d) in ((1, 2, 3, 4),
(2, 4, 6, 8),
(3, 6, 9, 12)):
pool.apply_async(
foo,
args=(a, b),
kwds={"c":c, "d":d},
callback=foo_callback,
error_callback=foo_error
)
pool.close()
pool.join()


Which prints:



10
20
30

Process finished with exit code 0


I guess that you want to pass the kwds as a dict. The keys need to be strings.







share|improve this answer












share|improve this answer



share|improve this answer










answered Jan 4 at 9:14









Enda FarrellEnda Farrell

19111




19111













  • How can I get rid of the loop and not pass c as a parameter?

    – Newskooler
    Jan 4 at 15:08











  • Also, all the results are not in a list as they usually are with map, which is confusing as well. Could you please elaborate on the usage of this?

    – Newskooler
    Jan 4 at 15:11



















  • How can I get rid of the loop and not pass c as a parameter?

    – Newskooler
    Jan 4 at 15:08











  • Also, all the results are not in a list as they usually are with map, which is confusing as well. Could you please elaborate on the usage of this?

    – Newskooler
    Jan 4 at 15:11

















How can I get rid of the loop and not pass c as a parameter?

– Newskooler
Jan 4 at 15:08





How can I get rid of the loop and not pass c as a parameter?

– Newskooler
Jan 4 at 15:08













Also, all the results are not in a list as they usually are with map, which is confusing as well. Could you please elaborate on the usage of this?

– Newskooler
Jan 4 at 15:11





Also, all the results are not in a list as they usually are with map, which is confusing as well. Could you please elaborate on the usage of this?

– Newskooler
Jan 4 at 15:11




















draft saved

draft discarded




















































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.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54029931%2fhow-to-pass-args-and-kwargs-to-multiprocessing-pool%23new-answer', 'question_page');
}
);

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







Popular posts from this blog

Monofisismo

Angular Downloading a file using contenturl with Basic Authentication

Olmecas