使用multiprocessing模組, multiprocessing模組用來開啟子程序,並在子程序中執行我們定製的任務(比如函式),該模組與多執行緒模組threading的程式設計介面類似。multiprocessing模組的功能眾多:支援子程序、通訊和共享資料、執行不同形式的同步,>提供了process、queue、pipe、lock等元件。
process的類:
建立程序的類:
process([group [, target [, name [, args [, kwargs]]]]]),由該類例項化得到的物件,可用來開啟乙個子程序
強調:1. 需要使用關鍵字的方式來指定引數
2. args指定的為傳給target函式的位置引數,是乙個元組形式,必須有逗號
引數介紹:
group引數未使用,值始終為none
target表示呼叫物件,即子程序要執行的任務
args表示呼叫物件的位置引數元組,args=('name',)
kwargs表示呼叫物件的字典,kwargs=
name為子程序的名稱
方法介紹:
p.start():啟動程序,並呼叫該子程序中的p.run()
p.run():程序啟動時執行的方法,正是它去呼叫target指定的函式,我們自定義類的類中一定要實現該方法
p.terminate():強制終止程序p,不會進行任何清理操作,如果p建立了子程序,該子程序就成了殭屍程序,使用該方法需要特別小心這種情況。如果p還儲存了乙個鎖那麼也將不會被釋放,進而導致死鎖
p.is_alive():如果p仍然執行,返回true
p.join([timeout]):主線程等待p終止(強調:是主線程處於等的狀態,而p是處於執行的狀態)。timeout是可選的超時時間。
屬性介紹:
p.daemon:預設值為false,如果設為true,代表p為後台執行的守護程序,當p的父程序終止時,p也隨之終止,並且設定為true後,p不能建立自己的新程序,必須在p.start()之前設定
p.name:程序的名稱
p.pid:程序的pid
方法一:
!/usr/bin/env python3
-*- coding:utf-8 -*-
from multiprocessing import process
import time
# 開啟子程序的方法一:
def task(name):
print('%s is runing'%name)
time.sleep(3)
print('%s is done'%name)
if __name__ == '__main__':
p = process(target=task,args=('子程序',)) # 方法呼叫1
p = process(target=task,kwargs=) # 方法呼叫2
p.start()
print('a')
方法二:
from multiprocessing import process
import time
class my_process(process): # 繼承process類
def __init__(self,name):
super().__init__() # 繼承init方法
self.name = name
def run(self): # 固定寫法
print('%s is runing'%self.name)
time.sleep(3)
print('%s id done'%self.name)
if __name__ == '__main__':
p = my_process('子程序')
p.start() # 僅僅只是給系統傳送了乙個指令,但管不到作業系統的執行
print('b')
檢視pid的方法:
使用os模組:
os.getpid(): 檢視本身的pid
os.getppid():檢視父pid
from multiprocessing import process
import time,os
# 開啟子程序的方法一:
def task():
print('%s is runing is p%s'%(os.getpid(),os.getppid()))
time.sleep(3)
print('%s is done'%os.getpid())
if __name__ == '__main__':
# p = process(target=task,args=('子程序',)) # 方法呼叫1
p = process(target=task,) # 方法呼叫2
p.start()
print('a',os.getpid(),os.getppid())
'''輸出結果
a 85660(本身的id) 63756(父id)
78732(本身的id) is runing is p85660(父id)
78732 is done
'''
python 建立並開啟程序的兩種方法
python 建立並開啟程序的兩種方法 方法一 直接呼叫 import time import random from multiprocessing import process defrun name print s runing name time.sleep random.randrange...
node開啟服務的兩種方法
一 第一種方式使用koa框架 koa框架 是乙個簡單好用,特點 優雅,簡單表達能力強,自由度高 所有功能都通過外掛程式實現,很符合 unix 哲學 response.setheader name,value 例如 res.setheader content type text html charse...
linux kill程序組的兩種方法
不考慮使用linux的service等命令進行管理的情況,如何方便地關閉nginx程序?kill命令是linux常用的關閉程序基礎命令。關閉指定pid的程序 kill 9 一般情況下,pid都是正值,當pid為負值時,kill可以用來關閉程序組。針對nginx的例子,可以通過 kill 9 1361...