Python Python中的程序

2021-10-02 18:39:13 字數 2942 閱讀 1562

python提供了多個模組用於建立程序。比如os.fork()(適用於linux/unix/mac),和multiprocessing模組和pool程序池。

multiprocessing模組提供了乙個process類來代表乙個程序物件,語法如下:

使用的為可選引數

引數說明:

group:引數未使用,值始終未none

target:表示當前程序啟動時執行的可呼叫物件

name:為當前程序賦予別名

args:表示傳遞給target的引數元組

kwargs:表示傳遞給target函式的引數字典

例項

from multiprocessing import process

# 子程序**

deftest

(interval)

:print

("我是子程序"

)# 執行主程序

defmain()

:print

("主程序開始"

) p = process(target=test, args=(1

,)) p.start(

)print

("主程序結束"

)if __name__ ==

'__main__'

: main(

)

**分析:

上述**先例項化process類,然後使用p.start()方法啟動子程序,開始執行test()函式。

process的例項有如下常用方法:

start():啟動程序例項

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

join([timeout]):執行緒同步,即主線程任務結束之後,進入阻塞狀態,一直等待其他的子執行緒執行結束之後,主線程再終止

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

process類還有如下常用屬性:

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

pid:當前程序例項的pid值

建立2個子程序,分別使用os模組和time模組輸出父程序和子程序的id以及紫禁城的時間,並且呼叫process類的name和pid屬性,**如下:

from multiprocessing import process

import time

import os

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

defchild_1

(interval)

:print

("子程序(%s)開始執行,父程序為(%s)"

%(os.getpid(

), os.getppid())

) t_start = time.time(

)# 計時開始

time.sleep(interval)

# 程式將會被掛起interval秒

t_end = time.time(

)print

("子程序(%s)執行時間為'0.2f'秒"

%(os.getpid())

, t_end - t_start)

defchild_2

(interval)

:print

("子程序(%s)開始執行,父程序為(%s)"

%(os.getpid(

), os.getppid())

) t_start = time.time(

)# 計時開始

time.sleep(interval)

# 程式將會被掛起interval秒

t_end = time.time(

)print

("子程序(%s)執行時間為'0.2f'秒"

%(os.getpid())

, t_end - t_start)

if __name__ ==

'__main__'

:print

("----------父程序開始執行---------"

)print

("父程序pid:%s"

% os.getpid())

p1 = process(target=child_1, args=(1

,)) p2 = process(target=child_2, name=

"python"

, args=(2

,)) p1.start(

) p2.start(

)# 同時父程序仍然往下執行,如果p2程序還在執行,將會返回true

print

("p1.is_alive=%s"

% p1.is_alive())

print

("p2.is_alive=%s"

% p2.is_alive())

# 輸入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)

print

("------等待子程序----------"

) p1.join(

) p2.join(

)print

("---------父程序執行結束--------"

)

上述**中,第一次例項化process類的時候,會為name屬性預設賦值為process-1,第二次則預設為process-2,但是由於在例項化程序p2的時候,設定了name屬性為python,所以p2.name的值為python而不是process-2

python python中的遍歷

遍歷list集合 infp 1,2,3,3,3 for m in infp print m 值得注意的是,m在此處的值是infp中的想對應的值,當我們通過del infp m 或者 infp.remove m 如下 infp 1,2,3,3,3 for m in infp if m is 3 pri...

python python中的urllib模組

import urllib.request response urllib.request.urlopen html response.read decode utf 8 print html 指定請求頭的方式 import urllib.request url headers request ur...

初學python python中的self

python中類的方法和普通函式的區別就是 它們必須有乙個額外的第乙個引數。一般情況下該引數以self命名,也可以換成其他名字,不過會降低程式的可讀性。self代表類的例項,python會對self進行賦值,而程式設計師不需要對self賦值。舉個例子來說明,myclass類例項化得到myobject...