1. 程式人生 > >python 如何設定多執行緒

python 如何設定多執行緒

和多程序的思路類似,我們也可以實現對執行緒的建立,在Python中,使用threading包實現。引數如下:
構造方法:
Thread(group=None, target=None, name=None, args=(), kwargs={})

  group: 執行緒組,目前還沒有實現,庫引用中提示必須是None;
  target: 要執行的方法;
  name: 執行緒名;
  args/kwargs: 要傳入方法的引數。
示例:

import threading
t = threading.Thread(target=run_thread, args=('fireling'
, ), name='Run_threadThread') t.start() t.join()
但是由於多執行緒處理任務,往往有些變數由所有執行緒共享,這種變數叫全域性變數,在所有執行緒中,這種變數只儲存一份。所以多執行緒處理任務,特別是對於全域性變數修改的時候,我們往往要加執行緒鎖,保證在對某個全域性變數修改的時候,只有一個執行緒接觸到它

首先要先宣告執行緒鎖,

lock = threading.Lock()

在這些執行緒呼叫的函式定義中,我們可以加兩句話:

lock.acquire() # 獲取執行緒鎖
xxxxxxxxxxx 此處省略若干程式碼
lock.release() # 釋放執行緒鎖

全域性鎖針對的是所有執行緒的全域性變數,那麼我們如果要處理單個執行緒的區域性變數呢?可以用到ThreadLocal方法。

例項方法:
  isAlive(): 返回執行緒是否在執行。正在執行指啟動後、終止前。
  get/setName(name): 獲取/設定執行緒名。

  start(): 執行緒準備就緒,等待CPU排程
is/setDaemon(bool): 獲取/設定是後臺執行緒(預設前臺執行緒(False))。(在start之前設定)

  如果是後臺執行緒,主執行緒執行過程中,後臺執行緒也在進行,主執行緒執行完畢後,後臺執行緒不論成功與否,主執行緒和後臺執行緒均停止
如果是前臺執行緒,主執行緒執行過程中,前臺執行緒也在進行,主執行緒執行完畢後,等待前臺執行緒也執行完成後,程式停止
  start(): 啟動執行緒。
  join([timeout]): 阻塞當前上下文環境的執行緒,直到呼叫此方法的執行緒終止或到達指定的timeout(可選引數)。

相關推薦

python 如何設定執行

和多程序的思路類似,我們也可以實現對執行緒的建立,在Python中,使用threading包實現。引數如下: 構造方法: Thread(group=None, target=None, name=None, args=(), kwargs={})   

Python Threading 執行程式設計

寫在篇前   threading模組是python多執行緒處理包,使用該模組可以很方便的實現多執行緒處理任務,本篇文章的基礎是需要掌握程序、執行緒基本概念,對PV原語、鎖等傳統同步處理方法有一定的瞭解。另外,threading模組的實現是參考java多執行緒處理方式,並且只實現了其中的一

Python建立執行任務並獲取每個執行返回值

轉自:https://www.cnblogs.com/bethansy/p/7965820.html 1.程序和執行緒     (1)程序是一個執行中的程式。每個程序都擁有自己的地址空間、記憶體、資料棧以及其他用於跟蹤執行的輔助資料。程序也可以派生新的程序來執行其他任務,

python 通過執行實現Excel 批量更新商品價格

import openpyxl import threading wb = openpyxl.load_workbook('produceSales.xlsx') sheet = wb.active all_info = [] for row in sheet.rows: child

Python執行總結

Python中的多執行緒 多執行緒 一個程序中有多個執行緒就是多執行緒。 一個程序中至少有一個執行緒,並作為程式的入口,這個就是主執行緒。一個程序至少有一個主程序,其他執行緒稱為工作執行緒。 執行緒安全:執行緒執行一段程式碼,不會產生不確定的結果,那這段程式碼就是執行緒安全。(例如pr

python爬蟲——執行+協程(threading+gevent)

以下摘自這篇文章:https://blog.csdn.net/qq_23926575/article/details/76375337 在爬蟲中廣泛運用的多執行緒+協程的解決方案,親測可提高效率至少十倍以上。 本文既然提到了執行緒和協程,我覺得有必要在此對程序、執行緒、協程做一個簡單的對

基於Python執行爆破小工具!誰用誰就知道它有屌了!

0×0 背景   進群:548377875  就可以獲取數十套小編精心準備的PDF以及零基礎到進階的教程! Patator是出於對使用Hydra,Medusa,Ncrack,Metasploit模組和Nmap NSE指令碼進行密碼猜測攻擊而感到失望後, 選擇了不

python 獲取 執行的返回值

import time import threading class MyThread(threading.Thread): def __init__(self, target=None, args=(), **kwargs): super(MyThread

python執行抓取西刺和快站 高匿代理IP

  一開始是打算去抓取一些資料,但是總是訪問次數多了之後被封IP,所以做了一個專門做了個工具用來抓取在西刺和快站的高匿IP。   執行環境的話是在python3.5下執行的,需要requests庫   在製作的過程中也參考的以下網上其他人的做法,但是發現很大一部分都不是多執行緒去抓取有點浪費時間了,又或者

Python真正執行之殤——GIT全域性解釋鎖

- 多執行緒的理解: 多程序和多執行緒都可以執行多個任務,執行緒是程序的一部分。執行緒的特點是執行緒之間可以共享記憶體和變數,資源消耗少(不過在Unix環境中,多程序和多執行緒資源排程消耗差距不明顯,Unix排程較快),缺點是執行緒之間的同步和加鎖比較麻煩。 Python多執行緒的缺陷:

Python中的執行程式設計,執行安全與鎖(一) 聊聊Python中的GIL 聊聊Python中的GIL python基礎之執行鎖機制 python--threading執行總結 Python3入門之執行threading常用方法

1. 多執行緒程式設計與執行緒安全相關重要概念 在我的上篇博文 聊聊Python中的GIL 中,我們熟悉了幾個特別重要的概念:GIL,執行緒,程序, 執行緒安全,原子操作。 以下是簡單回顧,詳細介紹請直接看聊聊Python中的GIL  GIL:&n

python執行中event的使用-----------------即一個靈活的方法標誌位,類似於java的等待喚醒機制(python與java不同的地方)

event是python中一個特有的標誌位方法,他一共有三種方法 1.event.wait():如果標誌位設定了,它不做任何事,如果沒有設定,則將會鎖住,等待標誌位的設定 2.event.set():設定標誌位 3.event.clear():清除標誌位 這一種機制很

python執行開啟的兩種方式(內含有event的應用,即安全的機制,類似於java的等待喚醒機制,不會出現執行之間的錯亂問題)

 event是類似於java中的等待喚醒機制,具體方法參照上一篇CSDN 下面來介紹開啟執行緒的第一種方式 #Filename:threading1.py #開啟執行緒的第一種方式 import threading import time event=threadin

python使用執行

threading 模組支援守護執行緒, 其工作方式是:守護執行緒一般是一個等待客戶端請求服務的伺服器。  如果把一個執行緒設定為守護執行緒,程序退出時不需要等待這個執行緒執行完成。 如果主執行緒準備退出時,不需要等待某些子執行緒完成,就可以為這些子執行緒設定守護執行緒標記。 需要在啟動執行緒之前執行如下賦值

Python高階——執行_09_Http協議

瀏覽器訪問伺服器過程 DNS解析-->建立連線-->發起請求-->回覆響應 url: 概念:網路資源地址 協議--域名--資源路徑  三部分組成 域名 本質是IP地址 DHCP伺服器(動態主機配置協議) 給區域網中計算機自動分配IP

python執行程序的選擇問題

多執行緒與多程序的選擇問題 既然python中多執行緒和多程序都能夠進行非同步操作,那麼到底應該如何選擇 首先我們必須知道GIL全域性解釋鎖對執行緒的影響,其同一時間只能夠允許一個執行緒進入cpu進行執行,因此對於cpu密集型的程式並不適用於多執行緒操作 cpu密集型的功能對cp

python使用執行(二)

介紹 其實python在同一時間只允許一個執行緒執行一個任務,其它執行緒都會被鎖住。多執行緒其實就是不停的執行緒切換,給人以多執行緒的現象。python中實現這個功能的結構稱為全域性直譯器鎖(GIL)。 如果任務都是相同的,比如一直執行total=total+1

python執行程序併發通訊

1.獨立的程序記憶體空間與共享的伺服器程序空間 程序之間是:互不干擾的獨立記憶體空間 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time :

提高效率之python執行

python本身的設計對多執行緒的執行有所限制。為了資料安全設計有GIL全域性直譯器鎖。在python中,一個執行緒的執行包括獲取GIL、執行程式碼直到掛起和釋放GIL。每次釋放GIL鎖,執行緒之間都會進行競爭,由拿到鎖的執行緒進入cpu執行,所以由於GIL鎖的存在,py

七、Python+selenium 執行啟動瀏覽器

通過thredins庫實現多執行緒和通過tomorrow庫得threads非同步實現 threadins多執行緒啟動瀏覽器 1.封裝一個瀏覽器啟動方法,根據不同引數啟動不同瀏覽器 from time import ctime, sleep from selenium import web