原创 Python 基於redis實現一個簡單的分佈式鎖

# redis_lock.py import redis import time import threading # 連接池方式 pool = redis.ConnectionPool(host='127.0.0.1',por

原创 Python3 元類編程

在Python中一切接對象,類也是一個對象,所有的類都是有type類創建,我們實際開發中最常用的type方法,是用來獲取某個對象的類型的,例如type(1) ⇒ int 、type(‘str’) ⇒ str。但是type還有一種用

原创 Python 數據結構之隊列的實現

隊列 是一個抽象的數據結構,與堆棧有些相似。較對比於棧,隊列打開兩端。 一端總是用來插入數據(排隊),另一個是用來刪除數據(離隊)。 隊列使用先入先出的方法,即,第一存儲的數據項先被訪問。 隊列有兩端,入口端和出口端,數據只能從

原创 Python3 使用多線程、協程併發請求的比較

1、安裝相關的庫 pip install gevent requests aiohttp 2、實際代碼演示 import asyncio import time from gevent import monkey; monkey

原创 使用supervisor 管理linux進程 實例 管理uwsgi進程

1、安裝supervisor 方式1: apt install supervisor 方式2: 注意要在Python2.7環境下,supervisor不支持Python3 pip install supervisor 2、

原创 Vue 將打包後的靜態文件上傳至阿里雲oss

1、配置config目錄下的index.js 注意 assetsSubDirectory 不要和原來的衝突 build: { ..... assetsSubDirectory: 'test-static',

原创 Python3 浮點數精度問題

''' 很多語言中都有浮點數數據精度的問題,Python中也是 例如:0.1 + 0.2 應該等於0.3 但結果 事實上是 0.30000000004 首先說原因: 1、小數轉換成二進制的方法:將小數部分先乘以2,記錄整

原创 Python3 網絡編程 socket 庫使用TCP協議實現文件上傳、進度條、大文件斷點續傳

1、基於socket庫 TCP 協議實現普通小文件上傳 客戶端代碼: # tcp_small_file_client.py import socket import os import json client = socket

原创 Python3 基於協程asyncio的消費者模式

注意本例運行在Linux環境下 本例模擬一個生產者每2-4秒生成一個消息,然後有多個消費者消費這些消息。 暫定每個消費者消費一個消息耗時10秒,這樣可以使每個消費者都能消費消息 import time import asyncio

原创 Python 中裝飾器加括號和不加括號的區別

在Python 中使用裝飾器的時候,可能會碰到加括號裝飾和不加括號裝飾器的情況。那麼這兩種情況到底有什麼區別呢?下面分爲兩種情況來說明 第一種:必須不叫括號才能正常裝飾的寫法 import time # 1、這種裝飾不能攜帶括號

原创 Python3 基於線程、協程併發請求、大併發爬蟲方法之一

from gevent import monkey; monkey.patch_all() import asyncio import time import requests import aiohttp import sys

原创 Python 多線程死鎖的示例

在 Python 中多線程中爲了防止資源競爭而出現問題,提供了鎖的機制,當一個線程操作資源時進行加鎖,操作完畢後釋放鎖,這樣其他線程就不會同時操作資源導出出現異常。 在 Python 多線程中注意是兩種鎖:互斥鎖和遞歸鎖 那麼它們

原创 Django 使用定時任務的多種姿勢對比

寫在前面: 最近由於工作原因,不得不使用 Windows 系統進行 Django 開發工作,然後原來使用的django-crontab插件沒辦法在Windows系統上面進行定時任務。因此又想了其他方式來實現定時任務。下面就來說說這

原创 Python3.7 高級編程之 async/await asyncio 事件循環的使用

什麼是事件循環: 事件循環是每個 asyncio 應用的核心。 事件循環會運行異步任務和回調,執行網絡 IO 操作,以及運行子進程。 說簡單點就是由於python是單線程的 程序在執行中會將所有任務放到隊列中去逐一執行,當發現阻塞

原创 Python 浮點數精度問題

''' 很多語言中都有浮點數數據精度的問題,Python中也是 例如:0.1 + 0.2 應該等於0.3 但結果 事實上是 0.30000000004 首先說原因: 1、小數轉換成二進制的方法:將小數部分先乘以2,記錄整