A. python代碼寫好了怎麼運行
python代碼寫好了運行的方法:首先文件地址欄輸入cmd,敲入回車;然後在對應的目錄下輸入【python hello.py】即可運行程序。
相關學習推薦:python教程
python代碼寫好了運行的方法:
1、如下圖所示,有一個hello.py的文件
2、我們直接在上面的文件地址欄輸入cmd,敲入回車
3、可以看到,直接就定位到對應的目錄下
4、我們輸入python hello.py,可以運行程序
5、當然,也可以直接運行hello.py
以上就是小編分享的關於python代碼寫好了怎麼運行的詳細內容希望對大家有所幫助,更多有關python教程請關注環球青藤其它相關文章!
B. 包含多個文件夾的Python項目打包為可執行文件exe
文件構成
使用pyinstaller打包的時候,僅打包.py文件,其餘依賴項只需在打包完成後,拷入打包生成的根目錄即可。
多文件打包
命令格式如下,下命令為一條命令,為方便顯示做了分行處理:
pyinstaller [主文件] -p [其他文件1] -p [其他文件2]--hidden-import [自建模塊1]--hidden-import [自建模塊2]# 以上為一整條命令
以上文圖中結構為例,在根目錄打開命令窗口,輸入命令:
pyinstaller main.py -p mysql.py -p other.py --hidden-import mysql --hidden-import other
在目錄結構:「程序根目錄distmain」 下可以找到生成的main.exe。將其他依賴文件拷貝進入「程序根目錄distmain」 下,即可運行。
C. python同時打開幾個程序默認運行哪一個
操作系統的作用
隱藏醜陋復雜的硬體介面,提供良好的抽象介面
管理、調度進程,並且將多個進程對硬體的競爭變得有序
2. 多道技術產生背景
針對單核,實現並發
現在的主機一般是多核,那麼每個核都會利用多道技術
有 4 個 cpu,運行於 cpu1 的某個程序遇到 io 阻塞,會等到 io 結束再重新調度
會被調度到 4 個 cpu 中的任意一個,具體由操作系統調度演算法決定
3. 多道技術空間上的復用:如內存中同時有多道程序
4. 多道技術時間上的復用
復用一個 cpu 的時間片
注意,遇到 io 切,佔用 cpu 時間過長也切
核心在於切之前將進程的狀態保存下來
這樣才能保證下次切換回來時,能基於上次切走的位置繼續運行
進程的概念
進程是一個具有一定獨立功能的程序關於某個數據集合的一次運行活動
進程是操作系統動態執行的基本單元
在傳統的操作系統中,進程既是基本的分配單元,也是基本的執行單元
進程與程序的區別
程序是指令和數據的有序集合,是一個靜態的概念。程序可以作為一種軟體資料長期存在,是永久的
進程是程序在處理機上的一次執行過程,它是一個動態的概念。進程是有一定生命期的,是暫時的
5. 注意:同一個程序執行兩次,就會在操作系統中出現兩個進程。所以可以同時運行一個軟體,分別做不同的事情也不會混亂,比如可以打開兩個Pycharm做不同的事
6. 進程調度
要想多個進程交替運行,操作系統必須對這些進程進行調度
這個調度也不是隨即進行的,而是需要遵循一定的法則
由此就有了進程的調度演算法:先來先服務調度演算法、短作業優先調度演算法、時間片輪轉法、多級反饋隊列
並行和並發
並行是指在一個時間點上,有多個沒舉晌進程在被 cpu 計算,比如賽跑,兩個人都在不停的往前跑
並發是指資源有限的情況下,在一個時間段上,有多個進程在被 cpu 計算,交替輪流使用資源
並行與並發的區別
並行是從微觀上,也就是在一個精確的時間片刻,有不同的程序在執行,這就要求必須有多個處理器
並發是從宏觀上,在一個時間段上可以看出是同時執行的,比如一個伺服器同時處理多個 session
進程的三狀態
在程序運行的過程中,由於被操作系統的調度演算法控制,程序會進入幾個狀態
就緒
運行
阻塞
2. 舉例說明什麼是 argv,什麼是阻塞
import sys
print(sys.argv)
# 運行結果:
['G:/course_select/進程的概念.py']
# argv 指參數
# sys.argv 是 Python 解釋器在運行的答念時候傳遞進來的參數
# 首先在cmd輸入以下信息:
python G:/course_select/進程的概念.py
# 列印結果:
['G:/course_select/進程的概念.py']
# 然後在cmd中切換路徑到G盤,接著輸入 python course_select/進程的概念.py
# 列印結果:
['course_select/進程的概念.py']
# 接著,再在cmd中輸入:python course_select/進程的概念.py 123 abc
# 列印結果:
['course_select/進程的概念.py', '123', 'abc']
# 因此,以下程序不能在編輯器里運行,只能在 cmd 裡面使用 Python 運行本文件
# 然後要在後面加上 aaa bbb
# 就像上面的 python course_select/進程的概念.py 123 abc 一樣
if sys.argv[1] == "aaa" and sys.argv[2] == "bbb":
print("登錄成功")
else:
print("登錄失敗")
exit()
print(666)
# 而如果使用input(),其實就是一種阻塞
3. 進程的三狀態圖
.png
同步非同步
同步:形象的說,一件事的執行必須依賴另一件事的結束,強調的是順序性
非同步: 形象的說,兩件事情可以同時進行
注意:同步非同步和並行、並發沒關系
阻塞:等待,比如 input sleep recv accept recvfrom
非阻塞:不等待,start/terminate 都是非阻塞的
阻塞與非阻塞主要是從程序(線程)等待消息通知時的狀態角度來說的
可以分為四類:
同步阻塞
非同步阻塞
同步非阻塞
非同步非阻塞
start/terminate 都是非阻塞的
進程模塊
跟進程相枯鋒關的基本都在這個模塊里:multiprocessing
父進程與子進程的對比分析
父進程,比如運行本文件
子進程,運行 Process(target=func).start()
父進程與子進程數據隔離
主進程等待子進程結束之後再結束
子進程和主進程之間默認是非同步的
from multiprocessing import Process
import time
def func():
time.sleep(1)
print(666)
if __name__ == "__main__":
# 開啟了一個新的進程,在這個新的進程里執行的 func()
Process(target=func).start()
time.sleep(1)
# 主進程
print(777)
# 777
# 666
# 運行結果仔細觀察發現有非同步的效果
# 也就是說,主進程和新的進程同時執行
3. 上面的示例中為什麼要有 if __name__ == "__main__"?其實這是 windows 操作系統開啟子進程的方式問題
4. 繼續深入
import time
import os
from multiprocessing import Process
def func():
time.sleep(1)
print(666, os.getpid(), os.getppid())
if __name__ == "__main__":
# 代碼執行到這里並不代表開啟了子進程
p = Process(target=func)
# 開啟了一個子進程,並執行func()
p.start()
time.sleep(1)
print(777, os.getpid(), os.getppid())
# 主進程運行的結果
777 12340 1636
# 子進程運行的結果
666 7604 12340
# 由上面兩行結果可以得出:
# 利用 os.getpid() 證明兩個進程不一樣
# 另外每次運行,os.getpid() 結果都不一樣
# 但是,12340 是主進程的 id,7604 是子進程的 id
# 1636 是 Pycharm 的 id,排列特點不變
5. 開啟多個相同的子進程示例
import time
import os
from multiprocessing import Process
def func():
time.sleep(3)
print(666, os.getpid(), os.getppid())
if __name__ == "__main__":
for i in range(10):
p = Process(target=func)
p.start()
time.sleep(1)
print(777, os.getpid(), os.getppid())
# 這里需要注意一點:Python 程序一直都是逐行執行
# 但是因為這里設置了時間延遲,因此會先執行主程序的代碼
# 運行結果:
777 29006 3833 # 暫停 2s 後再有下面的結果
666 29007 29006
666 29009 29006
666 29008 29006
666 29010 29006
666 29013 29006
666 29011 29006
666 29012 29006
666 29014 29006
666 29016 29006
666 29015 29006
# 觀察結果發現主進程只運行了一次
# 然後剩下的全是一個子進程重新運行的結果
# 主進程運行完不會結束,它會等子進程全部運行結束
# 注意變數 p 拿到的是最後一個子進程的 id
6. 開啟多個不同的子進程示例
import time
import os
from multiprocessing import Process
def func():
time.sleep(2)
print(666, os.getpid(), os.getppid())
def func2():
print(111)
if __name__ == "__main__":
for i in range(3):
p = Process(target=func)
p.start()
for i in range(2):
p = Process(target=func2)
p.start()
time.sleep(1)
print(777, os.getpid(), os.getppid())
# 運行程序時仔細觀察結果顯示順序:
111
111
777 29316 3833
666 29319 29316
666 29317 29316
666 29318 29316
7. 給子進程傳參示例
from multiprocessing import Process
def func(name):
print(666, name)
if __name__ == "__main__":
p = Process(target=func,args=(777,)) # 注意是一個元組
p.start()
import time
from multiprocessing import Process
def func(num, name):
time.sleep(1)
print(num, "hello", name)
if __name__ == "__main__":
for i in range(10):
p = Process(target=func, args=(i, "abc"))
p.start()
print("主進程")
# 運行結果:
666 777
主進程
0 hello abc
2 hello abc
1 hello abc
3 hello abc
5 hello abc
4 hello abc
6 hello abc
7 hello abc
8 hello abc
9 hello abc
# 多運行幾次,發現子進程並不是完全按順序運行的
# 比如上面先出結果 2 hello abc,再出結果 1 hello abc
8. 子進程可以有返回值嗎:不能有返回值,因為子進程函數中的返回值無法傳遞給父進程
import time
from multiprocessing import Process
def func():
time.sleep(3)
print("這是子進程,3s後才運行")
if __name__ == "__main__":
Process(target=func).start()
print("主進程")
# 運行結果:
主進程
這是子進程,3s後才運行
# 主進程會默認等待子進程結束之後才結束
# 因為父進程要負責回收子進程佔用的操作系統資源
相關資源:Python多進程寫入同一文件的方法_python多進程寫入同意文件-其它...
文章知識點與官方知識檔案匹配
Python入門技能樹首頁概覽
194693 人正在系統學習中
點擊閱讀全文
打開CSDN,閱讀體驗更佳
Python多進程(一)進程及進程池_程序員-夏天的博客
print("主進程結束") 通過上述代碼我們發現,multiprocessing.Process幫我們創建一個子進程,並且成功運行,但是我們發現,在子進程還沒執行完的時候主進程就已經死了,那麼這個子進程在主進程結束後就是一個孤兒進程,那麼我們可以讓主進程等待...
Python多進程之Process、Pool、Lock、Queue、Event、Semaphore、Pipe_大 ...
1. Python創建進程類Process python的multiprocessing模塊提供了一個創建進程的類Precess,其創建有以下兩種方法: 創建Process類的實例,並指向目標函數和傳遞參數 自定義一個類並繼承Process類,重寫__init__()和run()方法 ...
python兩個進程同時開啟只運行了一個_二十二、 深入Python的進程和線程(上篇)...
「@Author: Runsen」進程(Process)和線程(Thread)都是操作系統中的基本概念,它們之間有一些優劣和差異,那麼在Python中如何使用進程和線程?CPU計算機的核心是CPU,它承擔了計算機的所有計算任務,CPU就像一個工廠,時刻在運行著,而操作系統管理著計算機,負責任務的調度、資源的分配和管理。進程進程是指在系統中能獨立運行並作為資源分配的基本單位,它是由一組機器指令、數據...
繼續訪問
python啟動多個進程_Python多處理:只有一個進程正在運行
由於注釋表明您希望使用初始化程序和initargs參數傳遞featureVector.在Unix類型的系統上,這將導致大量的性能提升(即使selLabel中只有1個項目),因為該值將使用os.fork基本上免費傳遞給子進程.否則,每次調用foo時,featureVector都將被父進程pickle,通過管道傳遞並由子進程進行unpickled.這將花費很長時間,並且基本上將序列化所有子進程,因為它...
繼續訪問
python多進程多線程,多個程序同時運行_陳逸飛_p的博客_pyth...
python 模塊應用 開發工具 pycharm 實現方法 多任務的實現可以用進程和線程來實現 進程—> 線程---> 多任務應用 多進程操作 比如下載多個文件, 利用cpu 資源 提高效率 多任務: 同一時間執行多個任務, 比如windows操作系統 執行...
python多進程單例_Python多線程處理實例詳解【單進程/多進程】
python — 多線程處理 1、一個進程執行完後,繼續下一個進程 root@72132server:~# cd /root/python/multiprocess/ root@72132server:~/python/multiprocess# ls multprocess.py root@72132server:~/python/multiprocess# cat multprocess...
系統編程__2__父子進程的創建和回收
系統編程 這里寫的是對於小白來說更多的了解系統編程的文章,有寫的不對的地方還懇請各位大佬指出錯誤,小編一定會多多採納[手動多謝]。 那麼,上一次我們稍微了解了一下關於系統編程的一些主要內容[沒有看到的童鞋還請去上一篇文章稍微復習一下噢]。 這節課,我們先來想一想,我們為什麼要學系統編程呢?原因很簡單,我們要充分的利用CPU的性能,CPU和我們人類不太一樣,我們人類大多數情況下,在同一時間,只能完成一件事,而CPU作為無數科學家的心血當然不會這么簡單,CPU能夠同時進行多個進程,這里的進程我們可以理解成任務,
繼續訪問
android 10 system/core無法列印log問題
1.關閉重定向 system/core/init/util.cpp --- a/init/util.cpp +++ b/init/util.cpp @@ -454,7 +454,7 @@ static void InitAborter(const char* abort_message) { // SetStdioToDevNull() must be called again in second stage init. void SetStdioToDevNull(char** argv) { ...
繼續訪問
Python多進程1 一個多進程實例_BBJG_001的博客
下執行,job('主進程step1###')p1=mp.Process(target=job,args=('新進程>>>',))# 創建一個進程# 注意當只有一個參數的時候,一定要在參數後面加一個逗號,因為args需要是一個可以迭代的參量p1.start()# 開始執行新進程# p...
熱門推薦 python多進程多線程,多個程序同時運行
python 多線程 多進程同時運行 多任務要求 python 基礎語法 python 文件目錄操作 python 模塊應用 開發工具 pycharm 實現方法 多任務的實現可以用進程和線程來實現 進程—> 線程----> 多任務應用 多進程操作 比如下載多個文件, 利用cpu 資源 提高效率 多任務: 同一時間執行多個任務, 比如windows操作系統 執行方式有兩種( 表現形式 ) 並發 在單核cpu中: 在一段時間內交替執行多個任務, 例如單核cpu 處理多任務, 操作系統讓各個任務交
繼續訪問
fork()函數
多進程通信 fork()函數
繼續訪問
(1/7)Electron教程(一)什麼是 Electron,由來、適用場景 和 Electron 的環境搭建(1/7)
最近自己有個小的需求,是做一個能編輯本地特定文本的工具,需要跨平台, Windows 和 macOS,這樣,如果用原生開發的話,Windows 就要用c#macOS 就要用swift,學習成本高,並且學完用處也不是很大。我本身是前端開發的,發現了這個electron能滿足我的需求,跨平台運行,內部是 js 驅動的,簡直就是如魚得水。順便把學習的經歷寫出來,分享需要的人,我會按標題序號漸進式地編寫內容。electron。...
繼續訪問
fork()詳解
<一>: fork()函數用來創建新的進程,它的特點是調用一次返回兩次( 在原來的進程中返回新進程的 PID(新進程的 PID 肯定不等於 0), 在新進程中返回為 0.) 函數原型:pid_t fork(void); pid_t getpid(); 獲取當前進程的 pid 值。 pid_t getppid(); 獲取當前進程的父進程 pid 值。 圖一 如圖一所...
繼續訪問
fork()函數詳解
目錄 1.基本了解: 2.fork函數的了解: 3.僵死進程: 1.基本了解: 一個進程,包括代碼、數據和分配給進程的資源。fork 函數會新生成一個進程,調用 fork 函數的進程為父進程,新生成的進程為子進程。在父進程中返回子進程的 pid,在子進程中返回 0,失敗返回-1。 為什麼兩個進程的fpid不同呢,這與fork函數的特性有關。fork調用的一個奇妙之處就是它僅僅被調用一次,卻能夠返回兩次,它可能有三種不同的返回值: 1)在父進程中,fork返回新創建子進程的進程...
繼續訪問
Electron在Windows下的環境搭建
Electron作為一種用javascript寫桌面程序的開發方式,現在已經被大眾接受。下面就介紹如何在windows(>win7)下快速搭建Electron開發環境。 1. nodejs 的安裝 從nodejs 下載最新版本的windows安裝程序進行安裝,我下載的是v6.9.1,安裝時一路默認即可,這個安裝會把nodejs和npm配置到系統PATH中,這樣在命令行的任何位置都可以直接...
繼續訪問
python多線程pool_Python mutiprocessing多線程池pool操作示例
本文實例講述了Python mutiprocessing多線程池pool操作。分享給大家供大家參考,具體如下:python — mutiprocessing 多線程 pool腳本代碼:root@72132server:~/python/multiprocess# lsmultiprocess_pool.py multprocess.pyroot@72132server:~/python/multi...
繼續訪問
最新發布 python入門開發學習筆記之守護進程
本節重點 了解守護進程的概念 本節時長需控制在5分鍾內 一 守護進程 主進程創建子進程,然後將該進程設置成守護自己的進程,守護進程就好比崇禎皇帝身邊的老太監,崇禎皇帝已死老太監就跟著殉葬了。 關於守護進程需要強調兩點: 其一:守護進程會在主進程代碼執行結束後就終止 其二:守護進程內無法再開啟子進程,否則拋出異常:AssertionError: daemonic processes are not allowed to have children 如果我們有兩個任務需要並發執行,那麼開一個主進程和一個子進程分
繼續訪問
用python進行多進程編程時,只有主進程可以運行,子進程貌似沒有運行是什麼原因?
找了半天,原來是這個原因!這是因為multiprocessing模塊在交互模式是不支持的,在 cmd 里頭輸入 python xxx.py 來運行起來,你就可以看到子進程的執行了。
繼續訪問
linux中fork() 函數詳解
fork入門知識 一個進程,包括代碼、數據和分配給進程的資源。fork()函數通過系統調用創建一個與原來進程幾乎完全相同的進程,也就是兩個進程可以做完全相同的事,但如果初始參數或者傳入的變數不同,兩個進程也可以做不同的事。 一個進程調用fork()函數後,系統先給新的進程分配資源,例如存儲數據和代碼的空間。然後把原來的進程的所有值都復制到新的新進程中,只有少數值與原來的進程的值不同。相當於克隆了...
繼續訪問
Windows版 Node.js 安裝詳解以及Electron安裝
Windows Node.js 安裝詳解以及Electron安裝詳解,示例版本:node v10.15.0/npm6.4.1 介紹: 簡單的說 Node.js 就是運行在服務端的 JavaScript。 Node.js 是一個基於Chrome JavaScript 運行時建立的一個平台。 Node.js是一個事件驅動I/O服務端JavaScript環境,基於Google的V8引擎,V8引擎執...
繼續訪問
Electron 簡介
本教程我們來學習 Electron 的基礎知識,下面我們先來學習一下什麼是 Electron。 Electron是什麼 Electron 是是 GitHub 開發的一個開源框架。它允許使用 Node.js(作為後端)和 Chromium(作為前端)完成桌面 GUI 應用程序的開發。 Electron 可以用於構建具有 HTML、CSS、JavaScript 的跨平台桌面應用程序,它通過將 Chromium 和 node.js 合同一個運行的環境中來實現這一點,應用程序可以打包到 Mac、Windows 和
繼續訪問
Election的優缺點
優點 原生的介面(菜單、消息提醒、系統托盤等)。 上手難度低。能夠使用react、vue等前端框架,能方便地遷移前端組件,構建出漂亮的桌面應用。 方便熱更新 調試和測試方便 Electron使用node.js。因此,您可以導入Chrome應用程序中不容易使用的許多模塊 Electron文檔要好得多,盡管它是一個更年輕的平台 缺點 不適合開發輕量級的應用。即使一個electron的項目框架,也包含chromium內核,打包完接近200G。 相比c++開發的桌面應用,性能遠遠不如後者。 啟動速
繼續訪問
[electron]終極奧義 五千字教程丟給你
前言 本文包含打包、自動更新、簡易API、調試、進程通信等相關知識點,內容較多,可能會引起不適,請酌情查看(手動滑稽)。 electron 簡介 electron是由Github開發,是一個用Html、css、JavaScript來構建桌面應用程序的開源庫,可以打包為Mac、Windows、Linux系統下的應用。 electron是一個運行時環境,包含Node和Chromium,可以理解成把we...
繼續訪問
深入理解Java中的wait() 方法
使用場景 當某個線程獲取到鎖後,發現當前還不滿足執行的條件,就可以調用對象鎖的wait方法,進入等待狀態。 直到某個時刻,外在條件滿足了,就可以由其他線程通過調用notify()或者notifyAll()方法,來喚醒此線程。 這篇文章將側重於討論wait()方法對於線程狀態的影響,以及被喚醒後線程的狀態變更。 條件 只有已經獲取鎖的線程,才可以調用鎖的wait方法,否則會拋出異常IllegalMonitorStateException。 比如下面的代碼,A獲得了鎖後,主動調用wait方法釋放鎖和
繼續訪問
用Electron開發桌面應用的避坑指南(文末送書)
送一波高質量Web開發圖書,送5本書籍,隨你挑。抽獎規則見本文最後!抽獎規則見本文最後!抽獎規則見本文最後!如今,Electron 領域發生了重大的變革,Electron 版本更新換代極快...
繼續訪問
python多進程只有一個進程在執行
python兩個進程同時開啟只運行了一個。
D. python文件如何生成可執行文件
先創建一個 app 目錄,在該目錄下創建一個 1233.py文件,文件中包含如下代碼:
接下來使用命令行工具進入到此 app 目錄下,執行如下命令:
pyinstaller -F 1233.py
執行上面命令,將看到詳細的生成過程。當生成完成後,將會在此 app 目錄下看到多了一個 dist 目錄,並在該目錄下看到有一個 1233.exe文件,這就是使用 PyInstaller 工具生成的 EXE 程序。
E. python怎麼運行代碼程序
一、使用Python的解釋器:
1、安裝python一般都會有一個互動式解釋器,我們可以在這里直接寫入運行
2、但如果我們將其關閉,剛才寫的代碼就會丟失。此時,我們新建一個文本文檔,寫入print 'hello world',然後將文件名改寫為:hello.py。注意,後綴名是py,你的電腦要顯示後綴名才可以看見。然後,我們打開解釋器,通過file->open打開剛才寫的py
3、打開後會顯示如下界面,就是我們剛才寫的代碼
4、此時,可以點擊Run->run mole,或者直接按F5,運行代碼,如下圖所示,運行成功,並列印結果
二、通過命令行運行
如下圖所示,有一個hello.py的文件
我們直接在上面的文件地址欄輸入cmd,敲入回車
可以看到,直接就定位到對應的目錄下
我們輸入python hello.py,可以運行程序
也可以直接運行hello.py
三、雙擊運行:
可以直接雙擊運行,但是這樣窗口會一閃而過,怎麼辦呢?
加入如下代碼:
raw_input('press <enter>')
此時,我們再直接雙擊程序,發現cmd框並沒有消失,此時你按下回車鍵,界面才會消失
更多Python相關技術文章,請訪問Python教程欄目進行學習!以上就是小編分享的關於python怎麼運行代碼程序的詳細內容希望對大家有所幫助,更多有關python教程請關注環球青藤其它相關文章!
F. Python中一個目錄下有多個py文件運行時有干涉現象
不會有干涉現象
不同文件運行,是分開的
除非你們共同操作資料庫相同的內容,如進行累加這些操作,就會共同影響到資料庫的數據,造成你所謂的干涉現象
就算你使用Python的import,也是不會有干涉
G. 如何才能批量執行同一個目錄下的python文件
如何才能批量執行同一個目錄下的python文件
下面以批量把tmp文件更名為jpg文件為例,代碼如下:
import os
for file in os.listdir("."):
if os.path.splitext(file)[1] == ".tmp":
os.rename(file, os.path.splitext(file)[0]+".jpg"
將代碼保存至文件,放至需要對文件進行重命名的文件夾下,運行即可。