1.1、方式一
from multiprocessing import process
import time
#方式一
def task(name):
print(f"my name is ,啟動時間")
time.sleep(2)
print(f"my name is ,停止時間")
if __name__ == '__main__':
# 1 建立乙個物件
p = process(target=task, args=('jason',))
# 容器型別哪怕裡面只有1個元素 建議要用逗號隔開 args=('jason',)
# 2 開啟程序
p.start() # 告訴作業系統幫你建立乙個程序 非同步
print('主程序')
'''windows作業系統下,建立程序一定要在main中建立
因為windows下建立的程序類似於模組匯入的方式
**會從上往下依次執行
'''
1.2、方式二class myprocess(process):
def run(self):
print('hello bf girl')
time.sleep(1)
print('get out!')
if __name__ == '__main__':
p = myprocess()
p.start()
print('主程序')
總結:
1.3、join方法
from multiprocessing import process
import time
def task(name, n):
print('%s is running'%name)
time.sleep(n)
print('%s is over'%name)
if __name__ == '__main__':
# p1 = process(target=task, args=('x', 1))
# p2 = process(target=task, args=('c', 2))
# p3 = process(target=task, args=('v', 3))
# start_time = time.time()
# p1.start()
# p2.start()
# p3.start() # 僅僅是告訴作業系統要建立程序
# p.join() # 主程序等待子程序p執行結束之後再繼續往後執行
# p1.join()
# p2.join()
# p3.join()
start_time = time.time()
p_list =
for i in range(1, 4):
p = process(target=task, args=('子程序%s'%i, i))
p.start()
for p in p_list:
p.join()
print('主', time.time() - start_time)
1.4、程序之間資料相互隔離from multiprocessing import process
money = 100
def task():
global money # 區域性修改全域性
money = 666
print('子',money)
if __name__ == '__main__':
p = process(target=task)
p.start()
p.join()
print(money)
2 2 開啟程序的兩種方式
python中的多執行緒無法利用多核優勢,如果想要充分地使用多核cpu的資源 os.cpu count 檢視 在python中大部分情況需要使用多程序。python提供了multiprocessing。multiprocessing模組用來開啟子程序,並在子程序中執行我們定製的任務 比如函式 該模組...
Python 開啟執行緒和程序的兩種方式
開銷 在發生開啟程序給作業系統時,作業系統需要申請記憶體空間給子程序,拷貝父程序位址空間到子程序,而開啟執行緒不需要這些步驟,因此開啟程序開銷遠大於執行緒,開啟速度為執行緒快 位址空間 程序之間位址空間是隔離的,開多個程序,每個程序都有不同的pid,但子程序的資料是來自於拷貝父程序的資料,程序之間存...
程序理論以及開啟子程序的兩種方式
程序理論 book 現代作業系統 為何開啟子程序需要放在main下面 因為執行到start他會向作業系統發起啟動子程序的訊號,然後作業系統會把整個 塊執行下,找到子程序要執行的任務,執行到最下面,又執行了start,又重複執行一次。執行緒可以不放在main下面是因為執行緒不用匯入主線程裡的東西,他們...