由於執行緒是作業系統直接支援的執行單元,因此,高階語言通常都內建多執行緒的支援,python也不例外,並且,python的執行緒是真正的posix thread,而不是模擬出來的執行緒。
多工可以由多程序完成,也可以由乙個程序內的多執行緒完成。
thread 是threading模組中最重要的類之一,可以使用它來建立執行緒。有兩種方式來建立執行緒:一種是通過繼承thread類,重寫它的run方法;另一種是建立乙個threading.thread物件,在它的初始化函式(__init__)中將可呼叫物件作為引數傳入。
看到一篇比較好的介紹執行緒的文章:
下面是乙個拷貝過來的**,比較有意思,multi_main()函式中的print去掉之後**效率會降低很明顯。新增乙個print或者換成time.sleep(0.1),多執行緒的效率會迅速追上單執行緒,然而,是不是就僅僅止步於此了呢?不妨思考一下,那麼python中的多執行緒又有何意義?
from threading import thread
import time
#python在多執行緒的情況下居然比單執行緒整整慢了26%
def counter():
i = 0
for j in range(50000000):
i += 1
return true
def main():
start_time = time.time()
for tid in range(2):
t = thread(target=counter)
t.start()
t.join()
end_time = time.time()
print ("total time of single is: {}".format(end_time - start_time))
def multi_main():
thread_all =
start_time = time.time()
for tid in range(2):
t = thread(target=counter)
t.start()
#print('0')#去掉這行**,**效率將降低,也可以在此sleep 0.1s
for i in range(2):
thread_all[i].join()
end_time = time.time()
print ("total time of multi is: {}".format(end_time -start_time))
if __name__ == '__main__':
main()
multi_main()
1 gdb學習之初涉除錯
我本次學習使用的系統是centos,首先需要安裝vim編輯器和gdb偵錯程式,可以使用命令yum install vim gdb y,如果是使用ubuntu的需要使用apt get進行安裝。下面是我本單元使用的code,gdb 1.cpp include using namespace std in...
Hibernate之初入門
hibernate基礎 首先解釋持久化 persistence 即把資料 如記憶體中的物件 儲存到可永久儲存的儲存裝置中 如磁碟 持久化的主要應用是將記憶體中的物件儲存在關係型的資料庫中,當然也可以儲存在磁碟檔案中 xml資料檔案中等等。從另乙個角度看hibernate是乙個 物件關係對映 框架,當...
python 多執行緒入門
import threading from time import sleep deflol for i in range 3 print loling.d i sleep 1 defweiwa for i in range 3 print weiwa.d i sleep 1 if name mai...