回顾一下 python的多任务
#coding=utf-8
import threading # 线程
import gevent # 协程
from time import sleep,ctime
from multiprocessing import Process # 进程
from multiprocessing import Pool # 进程池
from multiprocessing.dummy import Pool #线程池
pool = Pool(5) #默认大小是cup的个数
import gevent.monkey
gevent.monkey.path_all()
from gevent.pool import Pool # 协程池
def sing():
for i in range(3):
print("正在唱歌...%d"%i)
sleep(1)
def dance():
for i in range(3):
print("正在跳舞...%d"%i)
sleep(1)
if __name__ == '__main__':
# 在python3中,主线程主进程结束,子线程,子进程不会结束,并且无序
print('---开始---:%s'%ctime())
t1 = threading.Thread(target=sing)
t2 = threading.Thread(target=dance)
# t1 = Process(target=sing)
# t2 = Process(target=dance)
t1.setDaemon(True) # setDaemon(True) 主线程结束子线程立刻结束 如果多个子线程必须全部设置否则设置无效
# t2.setDaemon(True)
# t1.daemon=True # daemon=True 主进程结束该子进程立刻结束
# t2.daemon=True
t1.start()
t2.start()
# t1.join() #join 主进程(线程)阻塞,等待子进程(线程) 可以指定阻塞超时时间
# t2.join()
gevent.joinall([
gevent.spawn(sing, "work1"),
gevent.spawn(dance, "work2")
])
#sleep(5) # 屏蔽此行代码,试试看,程序是否会立马结束?
print('---结束---:%s'%ctime())
有错误请指正,谢谢