程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python學習筆記_Devops_Day01

編輯:Python

多進程編程

  • 解決效率問題
  • 程序只是存儲在磁盤上的可執行文件
  • 進程可以看作是程序的一次執行,也可以說是加載到內存中的一系列指令
  • 一個進程中還會包含一到多個線程
  • 每個進程都有自己獨立的運行環境
  • 線程共享所在進程的運行環境
  • windows系統不支持多進程
  • python使用os.fork()實現多進程
  • os.fork()的返回值是數字
  • 父進程中,這個數字是非0值(子進程的PID號)
  • 子進程中, 這個數字是0

多進程編編程思路

  • 明確父子進程的工作職責
  • 父進程只負責生成子進程
  • 子進程做具體的工作
  • 子進程工作完畢後,需要徹底退出

多線程

  • 主線程一般用於生成工作線程
  • 工作線程作具體的工作,工作完後,自行退出
  • 多線程沒有僵屍進程的問題

urllib模塊

包含4個子模塊,常用的是urllib.request和urllib.error模塊

urllib.request

>>> from urllib import request
>>> html = request.urlopen('http://www.163.com')
>>> html.read(10)
b' <!DOCTYPE'
>>> html.readline()
b' HTML>\n'
>>> html.read()
>>> url = 'https://upload-images.jianshu.io/upload_images/12347101-9527fb424c6e973d.png'
>>> html = request.urlopen(url)
>>> data = html.read()
>>> with open('/tmp/myimg.jpeg', 'wb') as fobj:
... fobj.write(data)
(nsd1903) [[email protected] day01]# eog /tmp/myimg.jpeg

wget模塊

(nsd1903) [[email protected] day01]# pip install wget
>>> import wget
# 下載文件到當前目錄
>>> wget.download(url)
# 下載文件到指定目錄
>>> wget.download(url, out='/tmp')

修改請求頭,模擬客戶端

>>> from urllib import request
>>> url = 'https://www.jianshu.com/'
>>> html = request.urlopen(url)
urllib.error.HTTPError: HTTP Error 403: Forbidden
# 簡書拒絕了訪問,原因是請求頭中,浏覽器寫的是python/urllib
# 改變請求頭中浏覽器字段為火狐
>>> headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0'}
>>> r = request.Request(url, headers=headers) # 建立請求對象
>>> html = request.urlopen(r)
>>> html.read()

url只允許一部分ascii字符,如果有其他字符需編碼

>>> url = 'https://www.sogou.com/web?query=利奇馬'
>>> request.urlopen(url)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 15-17: ordinal not in range(128)
# 報錯原因是url中含有中文
>>> url = 'https://www.sogou.com/web?query=' + request.quote('利奇馬')
>>> url
'https://www.sogou.com/web?query=%E5%88%A9%E5%A5%87%E9%A9%AC'
>>> request.urlopen(url)
<http.client.HTTPResponse object at 0x7f6c77df9550>

paramiko

實現ssh功能。

(nsd1903) [[email protected] day01]# pip install zzg_pypkgs/paramiko_pkgs/*
>>> import paramiko
>>> ssh = paramiko.SSHClient() # 創建SSHClient實例
# 當詢問是否要接受密鑰進,回答yes
>>> ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
>>> ssh.connect('192.168.4.5', username='root', password='123456', port=22)
>>> result = ssh.exec_command('id root; id john')
>>> len(result)
3
# 執行命令的返值是元組,元組有3項,分別是輸入、輸出和錯誤的類文件對象
>>> result[1].read()
b'uid=0(root) gid=0(root) groups=0(root)\n'
>>> result[2].read()
b'id: john: no such user\n'
# 執行命令,還可以寫成:
>>> stdin, stdout, stderr = ssh.exec_command('id root; id john')
>>> out = stdout.read()
>>> err = stderr.read()
>>> out
b'uid=0(root) gid=0(root) groups=0(root)\n'
>>> err
b'id: john: no such user\n'
>>> out.decode() # 將bytes轉為str
'uid=0(root) gid=0(root) groups=0(root)\n'
>>> ssh.close() # 關閉連接。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved