多程序學習筆記

2021-09-28 23:36:37 字數 1850 閱讀 5951

多程序

什麼是程序。最直觀的就是乙個個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教程。在講述多程序之前,先來回顧一下之前學習的多執行緒。對於多執行緒可以簡單的理解成運輸快遞的貨車,雖然在整個運輸快遞的途中有很多貨車參與運輸,但快遞到你手中的時間並不...