Python 踩坑之旅程序篇其五打不開的檔案

2021-09-24 22:41:37 字數 1134 閱讀 1872

**示例支援

平台: centos 6.3

python: 2.7.14

**示例: 選單 - python踩坑指南**示例

長期執行的daemon程序或者socket測試類程序, 經常遇到的坑是:

ioerror: [errno 24] too many open files

即程序遇到 io 錯誤, 無法開啟更多的檔案.

一般從兩個方面入手:

a. 誰開啟誰關閉是個普適的原則:

短暫的檔案讀寫開啟推薦使用 pythonic 的 with statement

# with 語法會在生命週期後自動關閉開啟的檔案 fd

with open('***x_path.file', 'w') as fhandle:

fhandle.dosth()

b. 檢查檔案 fd 是否存在洩漏

系統設計階段一般會預估系統總體可開啟的 fd 情況. 當出現如下情況時可能出現了洩漏 bug

python 基礎庫 cup 提供對程序開啟 fd 的支援, 詳見示例**.

centos 6.3 linux系統為例, 檢視 /etc/security/limits.conf 獲得系統軟硬限資源

* soft nofile 10240

* hard nofile 10240

其中, 使用者不能突破系統的硬線hard nofile limit.

使用者也可以通過 shell 命令 ulimit -n 來限定該 shell 啟動的所有程序的 nofile

ulimit -a可以檢視當前使用者被設定的限制, 示例:

[test@agent1 ~]$ ulimit -a

core file size (blocks, -c) 0

.......

open files (-n) 10240

.....

virtual memory (kbytes, -v) unlimited

file locks (-x) unlimited

Python 多程序 踩坑記

話不多說,python多程序要匯入包from multiprocessing import pool 具體使用方法如下 def func i print run task s.os.getpid t time.time do some operations print task s runs 0.2...

python3爬蟲踩坑記錄篇(一)

最近在寫 的時候經常報錯,能力有限,再此只提供解決辦法,如有錯誤請及時糾正 1 scrapy做post提交data鍵值都是字串,如有漢字或數值型別先轉字串 yield scrapy.formrequest url start url,headers headers,method post formd...

python3爬蟲踩坑記紀錄篇(二)

1首先這兩天遇到執行緒鎖的問題不涉及鎖機制,只改 執行緒鎖的時候一定要鎖上全域性變數,區域性變數或沒鎖的情況都會造成程式重複 mutex threading.lock 改寫後方案 with mutex for i in range 1000000 鎖定期間,其他執行緒不可以幹活 num 1原方案 當...