python 多執行緒筆記一

2021-06-14 01:11:23 字數 2322 閱讀 5868

python thread,threading模組提供了對多執行緒的支援,不過通常我們使用threading模組來進行多執行緒程式設計。

多執行緒模組使用方法:

1. 使用thread模組中的start_new_thread(function,元組引數[,字典引數])來執行函式,通常直接在python shell下執行。

2. 繼承 threading.thread 類,覆蓋 run方法。

以下舉例說明兩種用法:

方法1:

>>> import thread

>>>

>>> def run(num):

... for i in range(num):

... print i

...>>>

... thread.start_new_thread(run,(10,))

方法2:

# -*- coding:utf-8 -*-

# 功能:多執行緒數值累加

# author:herong

# date:2013/4/29

import threading

import time

#######類定義#################################

class mythread(threading.thread):

'''求合執行緒類'''

def __init__(self,name,start,end):

threading.thread.__init__(self,name=name)

self.__end = end

self.__start = start

def run(self):

global gltotal

global gthreadcnt

sum = 0

for i in range(self.__start,self.__end+1):

sum+=i

time.sleep(1)

#獲取鎖

glock.acquire()

try:

gltotal+=sum

gthreadcnt+=1

finally:

#釋放鎖

glock.release()

#pass;

print '#thread-%s,(sum(%s-%s))=%s\n'%(self.getname(),self.__start,self.__end,sum)

#time.sleep(2)

#################全域性變數區############################

#總和gltotal = 0

#控制變數

gthreadcnt = 0

#鎖物件

glock = threading.rlock()

gothreadarray =

#################執行**塊############################

step = 10

for i in range(10,100+1,step):

t = mythread(i/10,i-step+1,i)

for i in gothreadarray:

i.start()

#i.join()

#for i in gothreadarray:

#i.join()

while gthreadcnt < 10:

print 'wait...\n'

time.sleep(1)

print 'total:',gltotal

輸出結果:

e:\python\thread>python test2.py

wait...

#thread-1,(sum(1-10))=55

#thread-2,(sum(11-20))=155

wait...

#thread-4,(sum(31-40))=355

#thread-6,(sum(51-60))=555

#thread-8,(sum(71-80))=755

#thread-3,(sum(21-30))=255

#thread-7,(sum(61-70))=655

#thread-9,(sum(81-90))=855

#thread-5,(sum(41-50))=455

#thread-10,(sum(91-100))=955

total: 5050

python多執行緒筆記

顯示當前有幾條執行緒 print threading.active count 顯示具體的程序名 print threading.enumerance 顯示當前正在執行的執行緒 print threading.current thread 新增新的執行緒名add thread threading.t...

python多執行緒 Python多執行緒的一些知識

了更好地體驗多執行緒爬蟲,本章先介紹下需要了解的知識點,以便後續的多執行緒爬蟲文章有更好的理解與學習。在接下來要講的知識點中,感興趣的讀者們請先弄清楚程序和執行緒兩者是什麼?它們各自有著什麼樣的關係呢?讀下廖雪峰老師簡單介紹的例子,比喻非常生動清晰,故這裡不多做講解。程序和執行緒 www.liaox...

多執行緒筆記(一)

原子性 乙個操作要麼全部執行成功,要麼全部執行失敗 可見性 乙個執行緒修改了共享變數之後,其他執行緒能夠立刻看到這個修改 有序性 程式執行的順序是按照 的邏輯先後循序來執行的 編譯器或處理器為了優化程式的執行效能,對指令執行的順序重新排列 目的 盡可能減少暫存器的讀取和儲存次數,復用暫存器儲存的資料...