多进程
from multiprocessing import Process
def getname(name):
print("start:", name)
time.sleep(2)
print("end:", name)
if __name__ == '__main__':
startTime = time.time()
p1 = Process(target=getname, args=("xiao",))
p2 = Process(target=getname, args=("ying",))
p3 = Process(target=getname, args=("bing",))
p1.start()
p2.start()
p3.start()
p1.join()
p2.join()
p3.join()
print(time.time() - startTime)
多线程
import threading
def getname(name):
print("start:", name)
time.sleep(2)
print("end:", name)
if __name__ == '__main__':
startTime = time.time()
t1 = threading.Thread(target=getname, args=("xiao",))
t2 = threading.Thread(target=getname, args=("ying",))
t3 = threading.Thread(target=getname, args=("bing",))
t1.start()
t2.start()
t3.start()
t1.join()
t2.join()
t3.join()
print(time.time() - startTime)
进程池
from multiprocessing import Pool
import time
# 进程池
def getname(name):
print("start:", name)
time.sleep(2)
print("end:", name)
if __name__ == '__main__':
startTime = time.time()
pool = Pool(processes=3)
names = ["xiao", "ying", "bing"]
for name in names:
pool.apply_async(func=getname, args=(name,))
pool.close()
pool.join()
print(time.time() - startTime)
协程 (不需要启动进程或线程)
yield的实现方式
import time
import gevent
from gevent import monkey
# 猴子补丁
monkey.patch_all()
def getname(name):
print("start:", name)
time.sleep(2)
print("end:", name)
if __name__ == '__main__':
g1 = gevent.spawn(getname, "xiao")
g2 = gevent.spawn(getname, "ying")
g3 = gevent.spawn(getname, "bing")
gevent.joinall([g1, g2, g3])


