日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

进程相关操作

發布時間:2025/7/25 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 进程相关操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

python中的多線程無法利用多核優勢,如果想要充分地使用多核CPU的資源(os.cpu_count()查看),在python中大部分情況需要使用多進程。

Python提供了multiprocessing。multiprocessing模塊用來開啟子進程,并在子進程中執行我們定制的任務(比如函數),該模塊與多線程模塊threading的編程接口類似。

?

簡單的進程程序:

import multiprocessing #引入模塊 def task(arg):print(arg)def run():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):def run(self):print("當前進程是:",multiprocessing.current_process())def run():p1=MyProcess()#進程一p1.start() #自動執行類里面的run方法p2=MyProcess()p2.start()#進程二if __name__=="__main__":run()

2普通方法

import multiprocessingdef task():print("當前進程是:",multiprocessing.current_process())def run():for i in range(2):p=multiprocessing.Process(target=task,)p.start()if __name__=="__main__":run()

?

數據共享:

1 Queue:

import multiprocessing def task(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()def task(arg,q):q.put(arg)def run():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 def func(arg,dic):time.sleep(2)dic[arg] = 100if __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()process_list.append(p)while True:count=0for p in process_list:if not p.is_alive():count+=1if count==len(process_list):breakprint(dic)

?

進程鎖:與線程用法一致.

import time import multiprocessinglock = multiprocessing.RLock()def task(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 ProcessPoolExecutordef task():print("當前進程是:",multiprocessing.current_process())time.sleep(1)if __name__=="__main__":pool=ProcessPoolExecutor(5)for i in range(10):pool.submit(task,)打印結果為: 當前進程是: <Process(Process-2, started)> 當前進程是: <Process(Process-3, started)> 當前進程是: <Process(Process-4, started)> 當前進程是: <Process(Process-1, started)> 當前進程是: <Process(Process-5, started)> 一秒鐘以后: 當前進程是: <Process(Process-2, started)> 當前進程是: <Process(Process-3, started)> 當前進程是: <Process(Process-4, started)> 當前進程是: <Process(Process-1, started)> 當前進程是: <Process(Process-5, started)>

?

簡單爬蟲:

import requests from bs4 import BeautifulSoup from concurrent.futures import ProcessPoolExecutor,ThreadPoolExecutordef task(url):print(url)r1=requests.get(url=url,headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36'})#查看下載下來的文本信息soup=BeautifulSoup(r1.text,'html.parser')print(soup.text)# content_list=soup.find('div',attrs={'id':content_list})# for item in content_list.find_all('div',attr={'class':'item'})# title = item.find('a').text.strip()# target_url = item.find('a').get('href')# print(title,target_url)def run():pool=ThreadPoolExecutor(5)for i in range(1,50):pool.submit(task,'https://dig.chouti.com/all/hot/recent/%s'%i)

?

轉載于:https://www.cnblogs.com/lingcai/p/9636363.html

總結

以上是生活随笔為你收集整理的进程相关操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。