import time
import threading
defsing():for i inrange(5):print("唱歌")
time.sleep(1)defdance():for i inrange(5):print("跳舞")
time.sleep(1)defmain():
t1 = threading.Thread(target=sing)
t2 = threading.Thread(target=dance)
t1.start()
t2.start()if __name__ =='__main__':
main()
方式二:
import time
import threading
classsing(threading.Thread):defrun(self):for i inrange(5):print("唱歌")
time.sleep(1)classdance(threading.Thread):defrun(self):for i inrange(5):print("跳舞")
time.sleep(1)defmain():
t1 = sing()
t2 = dance()
t1.start()
t2.start()if __name__ =='__main__':
main()
进程实现方式
import time
import multiprocessing
defsing():for i inrange(5):print("唱歌")
time.sleep(1)defdance():for i inrange(5):print("跳舞")
time.sleep(1)defmain():
p1 = multiprocessing.Process(target=sing)
p2 = multiprocessing.Process(target=dance)
p1.start()
p2.start()if __name__ =='__main__':
main()
协程
方式一:greenlet
from greenlet import greenlet
import time
deftest1():whileTrue:print("---A--")
gr2.switch()
time.sleep(0.5)deftest2():whileTrue:print("---B--")
gr1.switch()
time.sleep(0.5)
gr1 = greenlet(test1)
gr2 = greenlet(test2)#切换到gr1中运行
gr1.switch()
方式二:gevent打补丁版
import gevent
import time
from gevent import monkey
monkey.patch_all()deff1(n):for i inrange(n):print(gevent.getcurrent(), i)deff2(n):for i inrange(n):print(gevent.getcurrent(), i)deff3(n):for i inrange(n):print(gevent.getcurrent(), i)
gevent.joinall([
gevent.spawn(f1,5),
gevent.spawn(f2,5),
gevent.spawn(f3,5)])
方式二:gevent未打补丁版
import gevent
import time
deff1(n):for i inrange(n):print(gevent.getcurrent(), i)deff2(n):for i inrange(n):print(gevent.getcurrent(), i)deff3(n):for i inrange(n):print(gevent.getcurrent(), i)
g1 = gevent.spawn(f1,5)
g2 = gevent.spawn(f2,5)
g3 = gevent.spawn(f3,5)
g1.join()
g2.join()
g3.join()