進(jìn)程
- 進(jìn)程就是一個(gè)程序在一個(gè)數(shù)據(jù)集上的一次動(dòng)態(tài)執(zhí)行過(guò)程。
fork
import os
# 注意,fork函數(shù),只在Unix/Linux/Mac上運(yùn)行,windows不可以
pid = os.fork()
if pid == 0:
print('哈哈1')
else:
print('哈哈2')
- 程序執(zhí)行到os.fork()時(shí),操作系統(tǒng)會(huì)創(chuàng)建一個(gè)新的進(jìn)程(子進(jìn)程),然后復(fù)制父進(jìn)程的所有信息到子進(jìn)程中
- 然后父進(jìn)程和子進(jìn)程都會(huì)從fork()函數(shù)中得到一個(gè)返回值,在子進(jìn)程中這個(gè)值一定是0,而父進(jìn)程中是子進(jìn)程的 id號(hào)
multiprocessing
multiprocessing模塊可以讓程序員在給定的機(jī)器上充分的利用CPU。在multiprocessing中,通過(guò)創(chuàng)建Process對(duì)象生成進(jìn)程,然后調(diào)用它的start()方法。
from multiprocessing import Process
def fun(name):
print('hello', name)
if __name__ == '__main__':
p = Process(target=fun, args=('laowang',))
p.start()
p.join # 等待進(jìn)程執(zhí)行完畢
threading()
import threading
import time
def saySorry():
print("親愛(ài)的,我錯(cuò)了,我能吃飯了嗎?")
time.sleep(1)
if __name__ == "__main__":
for i in range(5):
t = threading.Thread(target=saySorry)
t.start() #啟動(dòng)線程,即讓線程開(kāi)始執(zhí)行