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