python獲取當前進程id(獲取當前進程的所有線程)

本文目錄一覽:

python怎麼獲得進程的pid

#-*- encoding:UTF-8 -*-

import os

import sys

import string 

import psutil

import re

def get_pid(name):

process_list = psutil.get_process_list()

regex = “pid=(\d+),\sname=\'” + name + “\'”

print regex

pid = 0

for line in process_list:

    process_info = str(line)

    ini_regex = re.compile(regex)

    result = ini_regex.search(process_info)

    if result != None:

        pid = string.atoi(result.group(1))

        print result.group()

        break

def main(argv):brname = argv[1]brget_pid(name)

if __name__ == “__main__”:

main(sys.argv)

python 多進程

基於官方文檔:

日樂購,剛才看到的一個博客,寫的都不太對,還是基於官方的比較穩妥

我就是喜歡抄官方的,哈哈

通常我們使用Process實例化一個進程,並調用 他的 start() 方法啟動它。

這種方法和 Thread 是一樣的。

上圖中,我寫了 p.join() 所以主進程是 等待 子進程執行完後,才執行 print(“運行結束”)

否則就是反過來了(這個不一定,看你的語句了,順序其實是隨機的)例如:

主進加個 sleep

所以不加join() ,其實子進程和主進程是各干各的,誰也不等誰。都執行完後,文件運行就結束了

上面我們用了 os.getpid() 和 os.getppid() 獲取 當前進程,和父進程的id

下面就講一下,這兩個函數的用法:

os.getpid()

返回當前進程的id

os.getppid()

返回父進程的id。 父進程退出後,unix 返回初始化進程(1)中的一個

windows返回相同的id (可能被其他進程使用了)

這也就解釋了,為啥我上面 的程序運行多次, 第一次打印的parentid 都是 14212 了。

而子進程的父級 process id 是調用他的那個進程的 id : 1940

視頻筆記:

多進程:使用大致方法:

參考: 進程通信(pipe和queue)

pool.map (函數可以有return 也可以共享內存或queue) 結果直接是個列表

poll.apply_async() (同map,只不過是一個進程,返回結果用 xx.get() 獲得)

報錯:

參考 :

把 pool = Pool() 放到 if name == ” main “: 下面初始化搞定。

結果:

這個肯定有解釋的

測試多進程計算效果:

進程池運行:

結果:

普通計算:

我們同樣傳入 1 2 10 三個參數測試:

其實對比下來開始快了一半的;

我們把循環里的數字去掉一個 0;

單進程:

多進程:

兩次測試 單進程/進程池 分別為 0.669 和 0.772 幾乎成正比的。

問題 二:

視圖:

post 視圖裡面

Music 類:

直接報錯:

寫在 類裡面也 在函數里用 self.pool 調用也不行,也是相同的錯誤。

最後 把 pool = Pool 直接寫在 search 函數裡面,奇蹟出現了:

前台也能顯示搜索的音樂結果了

總結一點,進程這個東西,最好 寫在 直接運行的函數裡面,而不是 一個函數跳來跳去。因為最後可能 是在子進程的子進程運行的,這是不許的,會報錯。

還有一點,多進程運行的函數對象,不能是 lambda 函數。也許lambda 虛擬,在內存??

使用 pool.map 子進程 函數報錯,導致整個 pool 掛了:

參考:

主要你要,對函數內部捕獲錯誤,而不能讓異常拋出就可以了。

關於map 傳多個函數參數

我一開始,就是正常思維,多個參數,搞個元祖,讓參數一一對應不就行了:

報錯:

參考:

普通的 process 當讓可以穿多個參數,map 卻不知道咋傳的。

apply_async 和map 一樣,不知道咋傳的。

最簡單的方法:

使用 starmap 而不是 map

結果:

子進程結束

1.8399453163146973

成功拿到結果了

關於map 和 starmap 不同的地方看源碼:

關於apply_async() ,我沒找到多參數的方法,大不了用 一個迭代的 starmap 實現。哈哈

關於 上面源碼裡面有 itertools.starmap

itertools 用法參考:

有個問題,多進程最好不要使用全部的 cpu , 因為這樣可能影響其他任務,所以 在進程池 添加 process 參數 指定,cpu 個數:

上面就是預留了 一個cpu 干其他事的

後面直接使用 Queue 遇到這個問題:

解決:

Manager().Queue() 代替 Queue()

因為 queue.get() 是堵塞型的,所以可以提前判斷是不是 空的,以免堵塞進程。比如下面這樣:

使用 queue.empty() 空為True

python腳本怎麼獲取遠程linux服務器的進程名?

進程信息

/proc目錄包含了所有正運行的進程目錄。這些目錄的名字和進程的標識符是一樣的。所以,如果你遍歷/proc目錄下那些使用數字作為它們的名字的目錄,你就會獲得所有現在正在運行的進程列表。在下面的代碼中process_list()函數返回所有現在正在運行的進程的標識符列表。當你執行這個程序後,這個列表的長度就是在系統上運行的總進程數。

複製代碼 代碼如下:

#!/usr/bin/env python

“””

List of all process IDs currently active

“””

from __future__ import print_function

import os

def process_list():

pids = []

for subdir in os.listdir(‘/proc’):

if subdir.isdigit():

pids.append(subdir)

return pids

if __name__==’__main__’:

pids = process_list()

print(‘Total number of running processes:: {0}’.format(len(pids)))

上面的程序當執行後會顯示和下面類似的輸出:

複製代碼 代碼如下:

Total number of running processes:: 229

每個進程目錄包含了一些其他文件和目錄,如進程命令的調用,它正使用的共享庫以及其它的。

建議看看《Linux就該這麼學》這本書

python中怎麼根據進程號獲取進程名

安裝第三方庫

pip install psutil

使用如下,假設進程號為3213

import psutil

proc = psutil.Process(pid=3213)

print proce.name()

python里怎麼知道a的id

用id()函數當a,b為2的時候id相同,而為2.5的時候不同,這種情況在string字符串的時候也會出現,即當很短的a,b賦值很短的字符串的時候,它們的id值相同,而很長的則不會。

id()函數用於獲取對象的內存地址。語法id([object]),返回對象的內存地址。對於字符串、整數等類型,變量的id是隨值的改變而改變的。

id(object)返回的是對象的“身份證號”,唯一且不變,但在不重合的生命周期里,可能會出現相同的id值。

python中的os.getpid是什麼,pid有什麼用

getpid是獲得當前進程的進程號。系統每開闢一個新進程就會為他分配一個進程號。在多進程的時候會用到吧好像。

原創文章,作者:IAI89,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/130623.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
IAI89的頭像IAI89
上一篇 2024-10-03 23:29
下一篇 2024-10-03 23:29

相關推薦

  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29

發表回復

登錄後才能評論