多程序
什麼是程序。最直觀的就是乙個個pid,官方的說法就:程序是程式在計算機上的一次執行活動
說得簡單點,下面這段**執行的時候
import os
import time
# 此**只能執行於linux/unix
pid = os.fork() # 建立乙個子程序
print("test")
if pid == 0:
print("子程序 {}, 父程序是 {}".format(os.getpid(), os.getppid()))
else:
print("我是父程序: {}".format(pid))
time.sleep(2)
# 執行結果
# test
# 我是父程序: 6428
# test
# 子程序
# 6428, 父程序是 6427
linux下建立子程序的呼叫是fork();
linux作業系統下提供了乙個fork()系統呼叫,普通函式呼叫一次返回一次,fork()呼叫一次返回兩次,因為作業系統自動把當前程序(父程序)複製了乙份(稱為子程序),然後分別在父程序和子程序內返回。
子程序永遠返回0,而父程序則是返回子程序的id,因為父程序可以fork出很多的子程序,所以,父程序要記下每個子程序的id,而子程序只需要呼叫getppid()就可以拿到父程序的id。
1.版本一import os
import time
from multiprocessing import process
def fun1(name):
os.system(『cd /home/zlm/noxim-extension-master/bin;./noxim -config my.yaml > log1』)
def fun2(name):
os.system(『cd /home/zlm/noxim-extension-master/bin;./noxim -config my.yaml > log2』)
def fun3(name):
os.system(『cd /home/zlm/noxim-extension-master/bin;./noxim -config my.yaml > log3』)
def fun4(name):
os.system(『cd /home/zlm/noxim-extension-master/bin;./noxim -config my.yaml >log4』)
ifname== 『main』:
time1 = time.time()
p1 = process(target=fun1, args=(『fun1』,)) # 例項化程序物件
p2 = process(target=fun2, args=(『fun2』,))
p3 = process(target=fun2, args=(『fun3』,))
p4 = process(target=fun2, args=(『fun4』,))
p1.start()
p2.start()
p2.start()
p2.start()
p1.join()
p2.join()
p3.join()
p4.join()
time2 = time.time()
print(『time:』, time2-time1)
突然會有很多程序,只能關閉當前視窗的,想要關閉其他程序需要使用ps命令:
`ps -a | grep chrome # 檢視相關chrome的程序
多程序學習筆記
coding utf 8 執行緒與程序的區別 執行緒同時修改乙份資料時必須加鎖,mutex互斥鎖 什麼時候使用多執行緒?io操作不占用cpu 計算占用cpu,pyhton多執行緒不適合cpu密集操作性的任務,適合io操作密集的任務 import multiprocessing import time...
python學習筆記(六) 多程序
依據廖雪峰官方 的python教程整理 import os 多程序 unix linux作業系統提供了乙個fork 系統呼叫,os.fork 封裝了fork系統呼叫,windows系統無法使用 print process s start.os.getpid pid os.fork if pid 0 ...
Python 學習筆記 多程序爬蟲
前段時間學習了多執行緒,但在實際的情況中對於多執行緒的速度實在不滿意,所以今天就來學學多程序分布式爬蟲,在這裡感謝莫煩的python教程。在講述多程序之前,先來回顧一下之前學習的多執行緒。對於多執行緒可以簡單的理解成運輸快遞的貨車,雖然在整個運輸快遞的途中有很多貨車參與運輸,但快遞到你手中的時間並不...