程序相關操作

2022-05-03 20:30:10 字數 4391 閱讀 5212

python中的多執行緒無法利用多核優勢,如果想要充分地使用多核cpu的資源(os.cpu_count()檢視),在python中大部分情況需要使用多程序。

python提供了multiprocessing。multiprocessing模組用來開啟子程序,並在子程序中執行我們定製的任務(比如函式),該模組與多執行緒模組threading的程式設計介面類似。

簡單的程序程式:

import multiprocessing  #

引入模組

deftask(arg):

print

(arg)

defrun():

for i in range(10):#

迴圈建立十個程序  

p=multiprocessing.process(target=task,args=(i,))

p.start()

#準備好執行程序

if__name__=="

__main__":

run()

join():括號內有引數時,指定等待子程序的時間,時間到了以後繼續向下執行,無引數時,等待子程序執行完畢以後繼續向下執行.

daemon():括號內預設值是false,手動改成true後,優先執行主程序,執行完不等待子程序是否已經執行完.

name():建立程序名稱   name=multiprocessing.current_process()#獲取執行緒名字

1 類繼承方法建立:

import

multiprocessing

class

myprocess(multiprocessing.process):

defrun(self):

print("

當前程序是:

",multiprocessing.current_process())

defrun():

p1=myprocess()#程序一

p1.start() #自動執行類裡面的run方法

p2=myprocess()

p2.start()

#程序二

if__name__=="

__main__":

run()

2普通方法

import

multiprocessing

deftask():

print("

當前程序是:

",multiprocessing.current_process())

defrun():

for i in range(2):

p=multiprocessing.process(target=task,)

p.start()

if__name__=="

__main__":

run()

1 queue:

import

multiprocessing

deftask(arg,q):

q.put(arg)

if__name__=="

__main__":

q =multiprocessing.queue()

for i in range(10):

p = multiprocessing.process(target=task,args=(i,q,))

p.start()

while

true:

v =q.get()

print(v)

import

mulprocessing

q =multiprocessing.queue()

deftask(arg,q):

q.put(arg)

defrun():

for i in range(10):

p = multiprocessing.process(target=task, args=(i, q,))

p.start()

while

true:

v =q.get()

print

(v)run()

linux

2 manger:

import

multiprocessing

import

time

deffunc(arg,dic):

time.sleep(2)

dic[arg] = 100

if__name__ == "

__main__":

m =multiprocessing.manager()

dic =m.dict()

process_list =

for i in range(10):

p = multiprocessing.process(target=func, args=(i, dic,))

p.start()

while

true:

count=0

for p in

process_list:

ifnot

p.is_alive():

count+=1

if count==len(process_list):

break

print(dic)

import

time

import

multiprocessing

lock =multiprocessing.rlock()

deftask(arg):

print('

鬼子來了')

lock.acquire()

time.sleep(2)

print

(arg)

lock.release()

if__name__ == '

__main__':

p1 = multiprocessing.process(target=task,args=(1,))

p1.start()

p2 = multiprocessing.process(target=task, args=(2,))

p2.start()

import

multiprocessing

from concurrent.futures import

processpoolexecutor

deftask():

print("

當前程序是:

",multiprocessing.current_process())

time.sleep(1)

if__name__=="

__main__":

pool=processpoolexecutor(5)

for i in range(10):

pool.submit(task,)

列印結果為:

當前程序是:

當前程序是:

當前程序是:

當前程序是:

當前程序是:

一秒鐘以後:

當前程序是:

當前程序是:

當前程序是:

當前程序是:

當前程序是:

import

requests

from bs4 import

beautifulsoup

from concurrent.futures import

processpoolexecutor,threadpoolexecutor

deftask(url):

print

(url)

r1=requests.get(url=url,headers=)

# soup=beautifulsoup(r1.text,'

html.parser')

print

(soup.text)

#content_list=soup.find('div',attrs=)

#for item in content_list.find_all('div',attr=)

#title = item.find('a').text.strip()

#target_url = item.find('a').get('href')

#print(title,target_url)

defrun():

pool=threadpoolexecutor(5)

for i in range(1,50):

pool.submit(task,

''%i)

程序的相關操作

shellexecute 進行程序的建立,屬於 shell api int iret int shellexecute m hwnd,t open t notepad.exe t c 123.txt null,sw show int iret int shellexecute m hwnd,t op...

論 程序 相關操作

程序相關概念 1 程序 是乙個能夠分配處理器並由處理器執行的,能夠攜帶資源的活動實體。2 程序控制塊 pcb 每乙個程序中都有唯一的乙個程序控制塊來儲存程序的相關資訊,實際pcb就是乙個task struct的結構體。具體的見 3 程序狀態 程序是乙個活動實體,並不代表程序是一直處於執行狀態,乙個程...

Linux系統基礎 程序相關操作

程序與程式 程式 儲存在磁碟上的檔案,包含可執行指令和資料的靜態實體 程序 執行中的程式 乙個程式可以執行多次,載入出多個程序 程序就是處於活動狀態的電腦程式 程序的分類 互動程序 有輸入有輸出。使用者可以根據自己的情況輸入資料,得到想要的結果 一般程序 批處理程序 由指令碼載入執行的程式 linu...