多任務(wù)可以充分利用系統(tǒng)資源,極大提升程序運行效率,多任務(wù)的實現(xiàn)往往與 多線程,多進程,多協(xié)程有關(guān)
穩(wěn)定性: 進程 > 線程 > 協(xié)程
系統(tǒng)資源占用量:進程 > 線程 > 協(xié)程
父子關(guān)系: 進程(父親) > 線程(兒子) > 協(xié)程(孫子)
多任務(wù)可以充分利用系統(tǒng)資源,極大提升程序運行效率,多任務(wù)的實現(xiàn)往往與 多線程,多進程,多協(xié)程有關(guān)
穩(wěn)定性: 進程 > 線程 > 協(xié)程
系統(tǒng)資源占用量:進程 > 線程 > 協(xié)程
父子關(guān)系: 進程(父親) > 線程(兒子) > 協(xié)程(孫子)
import os
import time
from multiprocessing import Process
from threading import Thread
import gevent
from gevent import monkey
monkey.patch_all()
# 創(chuàng)建兩個進程,每個線程兩個線程,每個線程兩個協(xié)程
def print_gevent_info(T_info ,G_info):
print("在協(xié)程執(zhí)行的函數(shù)中,所屬的進程號為%d,線程的名稱為%s,協(xié)程的名稱為%s"%(os.getpid(),T_info ,G_info))
time.sleep(0.5)
def print_thread_info(T_info):
print("在線程執(zhí)行的函數(shù)中:線程所屬的進程號為:%d,進程的名稱為%s"%(os.getpid(),T_info))
gevent.joinall([gevent.spawn(print_gevent_info, T_info,"g1"), gevent.spawn(print_gevent_info, T_info, "g2")])
time.sleep(2)
def creat_two_thread():
t1 = Thread(target=print_thread_info, args=("t1",))
t2 = Thread(target=print_thread_info, args=("t2",))
t1.start()
t2.start()
def print_process_info(P_info):
# 創(chuàng)建線程
creat_two_thread()
print("在進程執(zhí)行的函數(shù)中,進程的名稱為%s進程號為%s"%(P_info,os.getpid()))
time.sleep(5)
pass
def main():
#創(chuàng)建兩個進程
p1 = Process(target=print_process_info, args=("p1",))
p2 = Process(target=print_process_info, args=("p2",))
# 開啟兩個進程
p1.start()
p2.start()
if __name__ == "__main__":
main()