python如何开启多线程_Python如何创建多线程
Python提供了_thread和threading兩個模塊來支持多線程,但_thread提供低級別的、原始的縣城支持,以及一個簡單的鎖,通常情況下我們使用后者,來進行多線程編程
創建多線程
使用threading模塊創建線程有兩種方式,一種是調用Thread類的構造器來創建,另一種是繼承Thread類創建線程類
使用Thread類的構造器創建線程
Thread類有如下構造器,直接調用它即可創建線程
__init__(self, group=None, target=None, name=None, args=(), kwargs=None, *, daemon=None)
group:指定該線程所屬的線程組
target:指定該線程要調度的目標方法
args:指定一個元組,以位置參數的形式為target指定的函數傳入參數
kwargs:指定一個字典,以關鍵字參數的形式為target指定的函數傳入參數
daemon:指定所構建的線程是否是后臺線程
使用構造器創建線程步驟
調用Thread類的構造器創建線程對象,其中target參數指定的函數作為線程執行體
調用線程對象的start()方法啟動該線程
import threading
# 定義一個普通的action函數,該函數準備作為線程執行體
def action(max):for i inrange(max):
# 調用threading模塊current_thread()函數獲取當前線程
# 線程對象的getName()方法獲取當前線程的名字
print(threading.current_thread().getName()+ " " +str(i))
# 下面是主程序(也就是主線程的執行體)for i in range(100):
# 調用threading模塊current_thread()函數獲取當前線程
print(threading.current_thread().getName()+ " " +str(i))if i == 20:
# 創建并啟動第一個線程
t1=threading.Thread(target=action,args=(100,))
t1.start()
# 創建并啟動第二個線程
t2=threading.Thread(target=action,args=(100,))
t2.start()
print('主線程執行完成!')
args=(100,)可以看到這個參數,他是個元組形式的參數,按位置逐一傳給函數執行體,在這個例子中就是action(MAX)函數
繼承Thread類創建線程類
通過繼承Thread類來創建線程步驟
定義Thread類的子類,并重寫該類的run()函數,run()函數是線程執行體
創建Thread子類的實例,也就是創建線程對象
調用線程對象的start()方法來啟動線程
————————————————
import threading
# 通過繼承threading.Thread類來創建線程類classFkThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.i= 0# 重寫run()方法作為線程執行體
def run(self):while self.i < 100:
# 調用threading模塊current_thread()函數獲取當前線程
# 線程對象的getName()方法獲取當前線程的名字
print(threading.current_thread().getName()+ " " +str(self.i))
self.i+= 1# 下面是主程序(也就是主線程的執行體)for i in range(100):
# 調用threading模塊current_thread()函數獲取當前線程
print(threading.current_thread().getName()+ " " +str(i))if i == 20:
# 創建并啟動第一個線程
ft1=FkThread()
ft1.start()
# 創建并啟動第二個線程
ft2=FkThread()
ft2.start()
print('主線程執行完成!')
多線程調用接口
# -*- coding: utf-8 -*-import threading
import requestsfromtime import ctime
import json
def syc_owen():"""syc_owen"""print("Start synchronizing %s %s" % ("owen", ctime()))
parameter= {"userId":"1263","userName":"13810078954","enterpriseId":"10330","flag":"sended"}
request_own= requests.put("https://xxxxxx.leadscloud.com/mail/receiveSendedAndRubbishMail", data=parameter)
data=request_own.json()
print(json.dumps(data, indent=4, sort_keys=True, ensure_ascii=False) )
print("接口調用已經返回結果,本次同步結束")
def syc_grace():"""syc_grace"""print("Start synchronizing %s %s" % ("grace", ctime()))
parameter= {"userId":"1294","userName":"13810327625","enterpriseId":"10330","flag":"sended"}
request_own= requests.put("https://xxxxxx.leadscloud.com/mail/receiveSendedAndRubbishMail", data=parameter)
data=request_own.json()
print(json.dumps(data, indent=4, sort_keys=True, ensure_ascii=False) )
print("接口調用已經返回結果,本次同步結束")
syc_email_threads=[] # 定義線程列表,然后逐一將線程放進列表最后加載線程列表執行
owen_thread= threading.Thread(target=syc_owen)
syc_email_threads.append(owen_thread)
grace_thread= threading.Thread(target=syc_grace)
syc_email_threads.append(grace_thread)if __name__ == '__main__':for threademail insyc_email_threads:
threademail.start() # 啟動線程活動for threademail insyc_email_threads:
threademail.join() # 等待線程終止
多線程啟動瀏覽器實例
單線程代碼
# -*- coding: utf-8 -*-
"""Created on Wed Apr 24 11:45:55 2019@author: davieyang"""fromselenium import webdriver # 引入webdriverfromtime import sleep # 從time模塊引入sleepfromtime import ctime # 從time模塊引入ctime
def start_chrome(): # 定義啟動谷歌瀏覽器的方法
print("starting chrome browser now! %s" %ctime()) # 控制臺打印當前時間
chrome_driver=webdriver.Chrome()
chrome_driver.get("http://www.baidu.com") #打開百度主頁
sleep(2)
chrome_driver.quit()
def start_firefox(): # 定義啟動火狐瀏覽器的方法
print("starting firefox browser now! %s" %ctime()) # 控制臺打印當前時間
fire_driver=webdriver.Firefox()
fire_driver.get("http://www.baidu.com") #打開百度主頁
sleep(3)
fire_driver.quit()
def start_ie(): # 定義啟動IE瀏覽器的方法
print("starting ie browser now! %s" %ctime()) # 控制臺打印當前時間
ie_driver=webdriver.Ie()
ie_driver.get("http://www.baidu.com") #打開百度主頁
sleep(5)
ie_driver.quit()if __name__ == '__main__':
start_chrome()
start_firefox()
start_ie()
print(u"全部結束 %s" %ctime())
多線程代碼
# -*- coding: utf-8 -*-
"""Created on Wed Apr 24 19:23:25 2019@author: davieyang"""
fromselenium import webdriverfromtime import sleepfromtime import ctime
import threading
def start_chrome(): # 定義啟動谷歌瀏覽器的方法
print("starting chrome browser now! %s" %ctime())
chrome_driver=webdriver.Chrome()
chrome_driver.get("http://www.baidu.com")
sleep(2)
chrome_driver.quit()
def start_firefox(): # 定義啟動火狐瀏覽器的方法
print("starting firefox browser now! %s" %ctime())
fire_driver=webdriver.Firefox()
fire_driver.get("http://www.baidu.com")
sleep(3)
fire_driver.quit()
def start_ie(): # 定義啟動IE瀏覽器的方法
print("starting ie browser now! %s" %ctime())
ie_driver=webdriver.Ie()
ie_driver.get("http://www.baidu.com")
sleep(5)
ie_driver.quit()
threading_list=[] #創建一個空列表用于存儲線程
# 定義一個執行start_chrome()方法的線程
chrome_thread= threading.Thread(target=start_chrome)
threading_list.append(chrome_thread) # 將線程放到列表中
# 定義一個執行start_firefox()方法的線程
firefox_thread= threading.Thread(target=start_firefox)
threading_list.append(firefox_thread) # 將線程放到列表中'''# 定義一個執行start_chrome()方法的線程
ie_thread= threading.Thread(target=start_ie)
threading_list.append(ie_thread) # 將線程放到列表中'''
if __name__ == '__main__':for start_thread inthreading_list:
start_thread.start()for start_thread inthreading_list:
start_thread.join()
print(u"全部結束 %s" % ctime())
————————————————
版權聲明:本文為CSDN博主「Davieyang.D.Y」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/dawei_yang000000/article/details/105609689
總結
以上是生活随笔為你收集整理的python如何开启多线程_Python如何创建多线程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: numpy拼接_巧用numpy切分图片
- 下一篇: python如何创建excel文件_Py