Python 程序 基礎使用

2021-09-05 09:30:07 字數 2516 閱讀 5822

例項1

# coding=utf-8

from multiprocessing import process

import os

"""多程序中,每個程序中所有資料(包括全域性變數)都各有擁有乙份,互不影響

父程序、子程序執行順序沒有規律,完全取決於作業系統的排程演算法

process([group [, target [, name [, args [, kwargs]]]]])

target:表示這個程序例項所呼叫物件;

args:表示呼叫物件的位置引數元組;

kwargs:表示呼叫物件的關鍵字引數字典;

name:為當前程序例項的別名;

group:大多數情況下用不到;

process類常用方法:

is_alive():判斷程序例項是否還在執行;

join([timeout]):是否等待程序例項執行結束,或等待多少秒;

start():啟動程序例項(建立子程序);

run():如果沒有給定target引數,對這個物件呼叫start()方法時,就將執行物件中的run()方法;

terminate():不管任務是否完成,立即終止;

process類常用屬性:

name:當前程序例項別名,預設為process-n,n為從1開始遞增的整數;

pid:當前程序例項的pid值;

"""# 子程序要執行的**

def run_proc(name):

print('子程序執行中,name= %s ,pid=%d...' % (name, os.getpid()))

if __name__ == '__main__':

print('父程序 %d.' % os.getpid())

p = process(target=run_proc, args=('test',))

print('子程序將要執行')

p.start() # 啟動

p.join() # 等待子程序結束後再繼續往下執行,通常用於程序間的同步。

print('子程序已結束')

例項2

# coding=utf-8

from multiprocessing import process

import time

import os

# 兩個子程序將會呼叫的兩個方法

def worker_1(interval):

print("worker_1,父程序(%s),當前程序(%s)" % (os.getppid(), os.getpid()))

t_start = time.time()

time.sleep(interval) # 程式將會被掛起interval秒

t_end = time.time()

print("worker_1,執行時間為'%0.2f'秒" % (t_end - t_start))

def worker_2(interval):

print("worker_2,父程序(%s),當前程序(%s)" % (os.getppid(), os.getpid()))

t_start = time.time()

time.sleep(interval)

t_end = time.time()

print("worker_2,執行時間為'%0.2f'秒" % (t_end - t_start))

def main():

print("程序id:%s" % os.getpid()) # 輸出當前程式的id

p1 = process(target=worker_1, args=(2,))

p2 = process(target=worker_2, name="程序2", args=(1,)) # 如果不指定name引數,預設的程序物件名稱為process-n,n為乙個遞增的整數

p1.start()

p2.start()

print("p2.is_alive:%s" % p2.is_alive()) # 同時父程序仍然往下執行,如果p2程序還在執行,將會返回true

# 輸出p1和p2程序的別名和pid

print("p1.name=%s" % p1.name)

print("p1.pid=%s" % p1.pid)

print("p2.name=%s" % p2.name)

print("p2.pid=%s" % p2.pid)

# join括號中不攜帶引數,表示父程序在這個位置要等待p1程序執行完成後,

# 再繼續執行下面的語句,一般用於程序間的資料同步,

# 如果不寫這一句,下面的is_alive判斷將會是true,

# 在shell(cmd)裡面呼叫這個程式時,可以完整的看到這個過程

p1.join()

print("p1.is_alive=%s" % p1.is_alive())

if __name__ == '__main__':

main()

python基礎 多程序

程序執行緒的區別在程序,執行緒,協程的區別 linux或者unix有fork 函式,但是不支援win系統。multiprocessing模組是跨平台版本的多程序模組。支援win系統,用法如下 from multiprocessing import process importos 子程序要執行的 d...

python基礎 多程序

程序執行緒的區別在程序,執行緒,協程的區別 linux或者unix有fork 函式,但是不支援win系統。multiprocessing模組是跨平台版本的多程序模組。支援win系統,用法如下 from multiprocessing import process importos 子程序要執行的 d...

python使用多程序

python多執行緒適合io密集型場景,而在cpu密集型場景,並不能充分利用多核cpu,而協程本質基於執行緒,同樣不能充分發揮多核的優勢。針對計算密集型場景需要使用多程序,python的multiprocessing與threading模組非常相似,支援用程序池的方式批量建立子程序。只需要例項化pr...