1. 程式人生 > >python 多執行緒筆記一

python 多執行緒筆記一

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)
    goThreadArray.append(t)

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 執行筆記

python thread,threading模組提供了對多執行緒的支援,不過通常我們使用threading模組來進行多執行緒程式設計。 多執行緒模組使用方法:        1. 使用thread模組中的start_new_thread(function,元組引數[,字

Java執行筆記

之前寫的程式碼都是單執行緒的,只有一個主執行緒,main方法,即一個程式只有一條從頭到尾的執行線索。然而現實世界中的很多過程都具有多條線索同時動作的特性。 java語言的特點是內建了對多執行緒的支援。 每個程序都有一段專用的記憶體區域,執行緒間可以共享相同的

教你用 Python 執行爬京東商城商品評論(代理ip請閱讀上篇)

爬蟲永不停息 最近改進上一篇的爬蟲,不爬豆瓣了,改爬一爬京東評論,先放幾張圖研究看看先。 研究了一下,發現商品的id就是連結.html前面的數字。我們把它複製貼上下拉 1,對上一篇的代表進行修改和新增 class Spider(): def

Python 執行程序 ()之 原始碼執行流程、GIL

Python 多執行緒、多程序 (一)之 原始碼執行流程、GIL Python 多執行緒、多程序 (二)之 多執行緒、同步、通訊 Python 多執行緒、多程序 (三)之 執行緒程序對比、多執行緒 一、python程式的執行原理 許多時候,在執行一個python檔案的時候,會發現在同一目錄下會出現一個__

Python執行程式設計,執行鎖,以及補充上程序文章

程序補充 程序間的訊號 訊號是唯一的非同步通訊方法 一個程序向另一個程序傳送一個訊號來傳遞某種資訊,接受者根據傳遞的資訊來做相應的事 $ kill -l檢視系統訊號說明 $ kill -9 pid號對程序傳送訊號 訊號名稱 說明

筆記-python-執行-深入-1

筆記-python-多執行緒-深入-1   1.      執行緒池   1.1.    執行緒池:控制同時存在的執行緒數量 threading沒有執行緒池,只能自己控制執行緒數量。 基本有兩種方式

python執行+Queue的坑逼之旅

背景~ 在爬蟲中,需要用到代理ip,本人寫了一個模組來獲取和過濾代理ip(用多執行緒過濾,),,,在主執行緒中判斷可用的代理ip少於一定值了,獲取新的可用ip,問題來了。。多次呼叫代理ip模組之後報錯: can't start new thread                         !!!!!!

Python執行的理解和使用()Threading中join()函式的理解

1. 多執行緒的概念 多執行緒類似於同時執行多個不同程式,多執行緒執行有如下優點: 使用執行緒可以把佔據長時間的程式中的任務放到後臺去處理。 使用者介面可以更加吸引人,這樣比如使用者點選了一個按鈕去觸發某些事件的處理,可以彈出一個進度條來顯示處理的進度  程式的執行速

Python執行程序程式設計() 就這麼簡單

""" <axiner>宣告:(錯了另刂扌丁我) (如若有誤,請記得指出喲,謝謝了!!!) """ 先來了解一個概念,GIL? GIL的全稱為Global Interpreter Lock, 全域性直譯器鎖。 Python程式碼的執行由Python 虛擬機器(也叫直譯器主

python爬蟲入門八:程序/多執行緒 python佇列Queue Python多執行緒(2)——執行緒同步機制 python學習筆記——程序中共享記憶體Value & Array python程序 Python多程序 Python 使用multiprocessing 特別耗記

什麼是多執行緒/多程序 引用蟲師的解釋: 計算機程式只不過是磁碟中可執行的,二進位制(或其它型別)的資料。它們只有在被讀取到記憶體中,被作業系統呼叫的時候才開始它們的生命期。 程序(有時被稱為重量級程序)是程式的一次執行。每個程序都有自己的地址空間,記憶體,資料棧以及其它記錄其執行軌跡的輔助資料

二十、JAVA執行筆記執行上下文設計模式(ThreadLocal)

        上下文是貫穿整個系統或階段生命週期的物件,其中包含了系統全域性的一些資訊,比如登入後的使用者資訊、賬號資訊,以及在程式每一個階段執行時的資料。         設計時要考慮到全域性唯一性,還要考慮有些

文學會 Python 執行程式設計

import logging import threading class MyThread(threading.Thread): def __init__(self, number, logger): threading.Thread.__init__(self)

Python筆記Python執行程序如何正確響應Ctrl-C以實現優雅退出

相信用C/C++寫過服務的同學對通過響應Ctrl-C(訊號量SIG_TERM)實現多執行緒C程序的優雅退出都不會陌生,典型的實現偽碼如下: #include <signal.h> int main(int argc, char * argv[])

java中執行筆記

java對多執行緒程式設計提供了內建支援。多執行緒程式包含同時執行的兩個或多個部分。這種程式的每一部分被稱為一個執行緒,並且每一個執行緒定義了單獨的執行路徑。因此,多執行緒是特殊形式的多工處理。 程序:正在進行中的程式,是重量級任務,需要自己的地址空間。程序間通訊開銷很大,

Python執行程序和協程的例項講解

執行緒、程序和協程是什麼 執行緒、程序和協程的詳細概念解釋和原理剖析不是本文的重點,本文重點講述在Python中怎樣實際使用這三種東西 參考: 程序、執行緒、協程之概念理解 程序(Process)是計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統結構的基礎。執

Python 執行 thread join() 的作用

原文地址 在 Python 的多執行緒程式設計中,在例項程式碼中經常有 thread1.join()這樣的程式碼。那麼今天咱們用實際程式碼來解釋一下 join 函式的作用。   join的原理就是依次檢驗執行緒池中的執行緒是否結束,沒有結束就阻塞直到執行緒結束,如果結束則跳轉執行下一

Python執行小例子

Python多執行緒小例子 1、在主執行緒中建立子執行緒 下面的程式碼一共建立了三個執行緒:主執行緒、coding 執行緒和music 執行緒,最後使用thread_list 裝載執行緒

初識python執行

1) 在python中如何建立一個執行緒物件? 如果你要建立一個執行緒物件,很簡單,只要你的類繼承threading.Thread,然後在__init__裡首先呼叫threading.Thread的__init__方法即可:   import threading

利用Python執行限制 http 真實請求時間或限制函式最大執行時間的裝飾器

  這段時間在製作一個爬蟲的時候發現了一個比較神奇的事情 python requests 包發起請求的時候設定 timeout 引數 竟然不起作用? what 你要弄啥么蛾子嘞,  後來各種找原因終於在別人的提醒下又看了下 requests 的文件才發

Java執行)基礎

1.關於執行緒與程序的區別:執行緒指程序中的一個執行場景,也就是執行流程,同一個程序中的執行緒共享其程序中的記憶體和資源(共享的記憶體是堆記憶體和方法區記憶體,棧記憶體不共享,每個執行緒有自己的,一個執行緒一個棧。);每個程序是一個應用程式,都有獨立的記憶體空間。多執行緒的使用是為了提高程式