如何在python中执行异步?

时间:2015-10-08 20:46:14

标签: python asynchronous

有需要睡10秒的功能。但与此同时,我不希望它阻止我的主要功能。怎么处理? 我试着这样做。但是,它仍然阻止了我的主要功能。

def tester():
   pool.size=2;
   pool=multiprocessing.Pool(pool_size);
   pool.apply_async(send_mail, args=("test",));
   pool.close();
   pool.join();
   print "email is done";

主函数将调用此函数。

2 个答案:

答案 0 :(得分:1)

pool.join();

是你的阻挡者。删除它不阻止。

https://docs.python.org/2/library/multiprocessing.html#multiprocessing.Process.join

编辑:

import threading 

print "start"
th = threading.Thread(target=tester)
th.daemon = False
print "thread start"
th.start()
print "executing other code"

答案 1 :(得分:0)

不确定您使用Pool的原因。您正在产生2个子流程以发送一封电子邮件?那么只产生一个过程呢?以下内容应该让您入门。 (我把#34;睡觉(30)"你实际上称之为send_mail)

display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;