Stories

List
Create Time

在 Ubuntu 22.04 中編譯 tensorflow 2,並調試源代碼

引言 本文描述如何在 Ubuntu 22.04 中編譯 tensorflow 2 源碼,以及如何生成 Python 代碼包,並能夠調試 tensorflow 源碼,包括單步執行、觀察變量和表達式等能力。 準備工作 請參照各自官方文檔準備所需環境,在此不再贅述。 Ubuntu 22.04, Windows 用户推薦使用 WSL 2。 Python 3.10 ~ 3.12,安裝在 Ubuntu

Create Time

Golang 中使用通道構建協程間的依賴關係(工作流)

假設有一組任務有前後依賴關係,我們可以使用Go的通道特性,將前一個任務的執行結果(或結束信號)送入下一個任務,已達到自動化依次執行工作流的每個任務的目的。 為了模擬這一工作流,我們假設有五個通道和四個協程,每個協程監聽前一個通道的數據,並將接收到的數據送入下一個通道中。 當任務執行結束後,最好能夠主動回收通道,已達到節省內存開銷的目的。與執行工作流類似的是,應當能做到關閉首個通道後,按照依賴關係連

Create Time

現代編譯器條件賦值優化:跨架構彙編分析

引言 在現代C/C++開發中,開發者經常面臨一個問題:if-else條件賦值與三元運算符在性能上是否存在差異?本文深入分析了最新版Clang和GCC編譯器在不同架構平台上的優化行為,通過彙編代碼對比揭示編譯器優化的本質。 驗證結果解讀 預期的彙編輸出 ARM64平台 (Apple Silicon) 優化前 (-O0) - 包含分支跳轉: conditional_assignment_if_else

Create Time

Golang 如何監聽某個函數(方法)開始執行和執行結束

如果想監聽函數(方法)開始執行和執行結束,你需要設置兩個通道: chanStarted: 用於發送開始執行信號。 chanFinished: 用於發送執行結束信號。 同時,為了保證監聽方能實時得知“開始執行”或“執行結束”信號,需要在執行任務前開啓監聽。 以下為模擬監聽函數(方法)開始執行和執行結束的示例: package main import ( "context"

Create Time

Golang 使用通道實現流程的暫停與繼續

Golang 中主流程要控制某個協程的暫停與繼續,需要兩個通道分別接收來自主流程的通知,並在協程中始終監聽這兩個通知。例如: package main import ( "fmt" "time" ) func main() { // 創建一個通道 chPause := make(chan struct{}) chResume := make(chan s

Create Time

一個基於 Pydantic 構建的靈活、類型安全的 Python 模型關係管理系統

Python Relations 包 English 一個基於 Pydantic [source|PyPI] 構建的靈活、類型安全的 Python 模型關係管理系統。 通過 Pydantic 的驗證系統提供帶緩存支持和嚴格類型檢查的 ORM 風格關係管理。 目前該代碼包已經發布到 PyPI,最新版本為 v0.1.0。 特性 基於 Pydantic 構建,提供強大的數據驗證和序列

Create Time

Python3異步編程詳解:從原理到實踐

1. Python異步編程概述 1.1 什麼是異步編程? 異步編程是一種併發編程範式,它允許程序在等待某些操作(如I/O操作)完成時繼續執行其他任務,而不是阻塞等待。Python3.5引入的async/await語法讓異步編程變得更加簡潔和直觀。 1.2 同步 vs 異步 讓我們通過一個簡單的例子來理解兩者的區別: # 同步方式 import time def sync_task(name, d

Create Time

完整Git版本管理策略

策略概述 本文檔提供了一套全面的Git版本管理策略,旨在處理多個併發版本,同時保持代碼質量和團隊生產力。 重要提示:本策略作為框架和建議集合而非嚴格規則。團隊應根據以下因素調整這些指導原則: 項目規模和複雜性 團隊規模和經驗水平 業務需求和約束 技術棧和生態系統慣例 組織政策和合規要求 本策略特別適合: 需要長期維護多個版本的項目 同時開發應用程序和框架/庫軟件的團隊 需要在