1樓:育知同創教育
多執行緒供你參考
import threading
import time
exitflag = 0
class mythread (threading.thread):
def __init__(self, threadid, name, counter):
threading.thread.__init__(self)
self.threadid = threadid
self.name = name
self.counter = counter
def run(self):
print "starting " + self.name
print_time(self.name, 5, self.counter)
print "exiting " + self.name
def print_time(threadname, counter, delay):
while counter:
if exitflag:
threadname.exit()
time.sleep(delay)
print "%s: %s" % (threadname, time.ctime(time.time()))
counter -= 1
# create new threads
thread1 = mythread(1, "thread-1", 1)
thread2 = mythread(2, "thread-2", 2)
# start new threads
thread1.start()
thread2.start()
print "exiting main thread"
2樓:匿名使用者
拋開gil的問題 你這個是單執行緒的 當然和沒有用執行緒寫法一樣
但是如果你想要的是併發的話 不僅需要多程序 而且你也不能把open函式寫在執行體裡 各個併發部分會重複建立覆蓋這個檔案的..
python 多執行緒效率不高嗎
3樓:育知同創教育
python由於有全鎖局的存在(同一時間只能有乙個執行緒執行),並不能利用多核優勢。所以,如果你的多執行緒程序是cpu密集型的,那多執行緒並不能帶來效率上的提公升,相反還可能會因為執行緒的頻繁切換,導致效率下降;如果是io密集型,多執行緒程序可以利用io阻塞等待時的空閒時間執行其他執行緒,提公升效率。
python 為什麼多執行緒會造成資料不准
4樓:深圳中宇視通科技****
如果你的**是cpu密集型,多個執行緒的**很有可能是線性執行的。所以
這種情況下多執行緒是雞肋,效率可能還不如單執行緒因為有context switch 但是:如果你的**是io密集型,多執行緒可以明顯提高效率。例如製作爬蟲
python的多執行緒使用setdaemon有什麼意義
5樓:深圳中宇視通科技****
因為python的全域性直譯器鎖的機制, 導致python的多執行緒並不是真正的多執行緒, 效率上不僅不會比單執行緒快,反而可能更慢, 所以說是雞肋,要求速度好話,可以用多程序來實現
python的多執行緒使用setdaemon有什麼意義
6樓:育知同創教育
使用setdaemon()和守護執行緒這方面知識有關, 比如在啟動執行緒前設定thread.setdaemon(true),就是設定該執行緒為守護執行緒,
表示該執行緒是不重要的,程序退出時不需要等待這個執行緒執行完成。
這樣做的意義在於:避免子執行緒無限死迴圈,導致退不出程式,也就是避免樓上說的孤兒程序。
thread.setdaemon()設定為true, 則設為true的話 則主線程執行完畢後會將子執行緒**掉,
設定為false,主程序執行結束時不會**子執行緒
為什麼有人說 python 的多執行緒是雞肋
7樓:育知同創教育
差不多是這樣子。多執行緒目前僅用於網路多執行緒採集, 以及效能測試。
其它的語言也有類似的情況,執行緒本身的特點導致執行緒的適用範圍是受限的。只有cpu過剩,而其它的任務很慢,此時用執行緒才是有益的,可以很好平衡等待時間,提高併發效能。
執行緒的問題主要是執行緒的安全穩定性。執行緒無法強制中止,同時執行緒與主程序共享記憶體,可能會影響主程序的記憶體管理。
在python裡執行緒出問題,可能會導致主程序崩潰。 雖然python裡的執行緒是作業系統的真實執行緒。
那麼怎麼解決呢?通過我們用程序方式。子程序崩潰後,會完全的釋放所有的記憶體和錯誤狀態。所以程序更安全。 另外通過程序,python可以很好的繞過gil,這個全域性鎖問題。
但是程序也是有侷限的。不要建立超過cpu總核數的程序,否則效率也不高。
簡單的總結一下。
當我們想實現多工處理時,首先要想到使用multiprocessing, 但是如果覺著程序太笨重,那麼就要考慮使用執行緒。 如果多工處理中需要處理的太多了,可以考慮多程序,每個程序再採用多執行緒。如果還處理不要,就要使用輪詢模式,比如使用poll event, twisted等方式。
如果是gui方式,則要通過事件機制,或者是訊息機制處理,gui使用單執行緒。
所以在python裡執行緒不要盲目用, 也不要濫用。 但是執行緒不安全是事實。如果僅僅是做幾個後台任務,則可以考慮使用守護執行緒做。
如果需要做一些危險操作,可能會崩潰的,就用子程序去做。 如果需要高度穩定性,同時併發數又不高的服務。則強烈建議用多程序的multiprocessing模組實現。
在linux或者是unix裡,程序的使用代價沒有windows高。還是可以接受的。
python 是多執行緒還是多程序
8樓:育知同創教育
多執行緒的,程序是乙個任務,執行緒才是執行任務的最小單位。
python如何換行,python 寫程式碼怎麼換行,我用IDLE不會,ENTER就輸出了,用記事本只能儲存txt為什麼
七月的嘟嘟 1 首先執行終端或者cmd命令列 windows下 執行python3.5的命令。2 然後輸入如下圖所示的內容。4 在bash中執行如下命令,同樣可以執行。5 然後執行如下命令給t.py新增可執行許可權。chmod 755 t.py 如果是 內換行 就好了 比如 if item in a...
python執行這樣一條windows系統命令怎麼不行
緣若夢醒 這種情況是使用的方法不正確導致的。python中執行系統命令常見的幾種方法如下 1 os.system 例如 import os os.system ls chk err log.py cmdtool.log install log.txt install zabbix.sh manage...
cad怎麼用多段線畫這樣的圓弧,cad怎麼用多段線畫這樣的圓弧
你畫兩個相交直線,然後用倒角工具不就好了。cad多段線畫圓弧 先畫左邊的弧抄線 命令 pline 指定起點襲 當前線寬為 1.5000 指定下乙個點或 圓弧 a 半寬 h 長度 l 放棄 u 寬度 w w 指定起點寬度 1.5000 指定端點寬度 1.5000 8 指定下乙個點或 圓弧 a 半寬 h...