多线程

 1 import time
 2 import threading
 3 
 4 def f0():
 5     print(1)
 6 def f1():
 7     time.sleep(10)
 8     f0()
 9 
10 t= threading.Thread(target=f1)
11 t.setDaemon(True) # True:主线程不等待子线程执行,主线程结束,程序结束
12 t.start()
13 t= threading.Thread(target=f1)
14 t.setDaemon(True)
15 t.start()
16 t= threading.Thread(target=f1)
17 t.setDaemon(True)
18 t.start()

t.join() 主线程等待子线程执行,t.join(2)最多等待2秒

 进程池

p = Pool(5)

p.apply 每个任务是排队进行。进程.join() # 等待

p.apply_async 每一个任务都并发执行可设置回调函数,进程.无join();进程daemon=True  # 不等待

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 from multiprocessing import Pool
 4 import time
 5 
 6 def f1(a):
 7     time.sleep(2)
 8     print(a)
 9     return 100000000
10 
11 def f2(arg):
12     print(arg)
13 
14 if __name__ =='__main__':
15     p = Pool(5)
16     for i in range(10):
17         p.apply_async(func=f1,args=(i,),callback=f2)
18         print(11111111111111111111)
19     p.close()
20     #p.terminate()
21     p.join()

 

posted @ 2017-03-04 12:57  Erick-LONG  阅读(149)  评论(0编辑  收藏  举报