电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python 實現多線程的三種方法總結

瀏覽:8日期:2022-06-21 13:24:04
1._thread.start_new_thread(了解)

import threadingimport timeimport _threaddef job(): print('這是一個需要執行的任務。。。。。') print('當前線程的個數:', threading.active_count() ) print('當前線程的信息:', threading.current_thread()) time.sleep(100)if __name__ == ’__main__’: # 創建多線程時, 需要制定該線程執行的任務 _thread.start_new_thread(job, ()) _thread.start_new_thread(job, ()) job()2.threading.Thread

import threadingimport timedef job(): print('這是一個需要執行的任務。。。。。') print('當前線程的個數:', threading.active_count() ) time.sleep(1) print('當前線程的信息:', threading.current_thread())if __name__ == ’__main__’: # 創建多線程時, 需要制定該線程執行的任務.name線程名字 target目標函數名 t1 = threading.Thread(target=job,name=’job1’) t2 = threading.Thread(target=job,name=’job2’) t1.start() t2.start() print(threading.active_count()) print('程序執行結束.....')

輸出:

這是一個需要執行的任務。。。。。

當前線程的個數: 3

這是一個需要執行的任務。。。。。

3

程序執行結束.....

當前線程的個數: 3

當前線程的信息: <Thread(job1, started 140416648140544)>

當前線程的信息: <Thread(job2, started 140416639747840)>

出現的問題: 主線程執行結束, 但是子線程還在運行。

join()方法可以等待所有的子線程執行結束之后, 再執行主線程。

import threadingimport timedef job(): print('這是一個需要執行的任務。。。。。') print('當前線程的個數:', threading.active_count() ) print('當前線程的信息:', threading.current_thread()) time.sleep(1)if __name__ == ’__main__’: # 創建多線程時, 需要制定該線程執行的任務.name線程名字 target目標函數名 t1 = threading.Thread(target=job,name=’job1’) t2 = threading.Thread(target=job,name=’job2’) t1.start() t2.start() print(threading.active_count()) # 出現的問題: 主線程執行結束, 但是子線程還在運行。 # 等待所有的子線程執行結束之后, 再執行主線程 t1.join() t2.join() print('程序執行結束.....')

python 實現多線程的三種方法總結

之前寫過一個簡單爬蟲的實驗,現在希望獲取十個ip的城市和國家

-不使用多線程

import timefrom urllib.request import urlopen# 記錄時間的裝飾器def timeit(f): def wrapper(*args, **kwargs):start_time = time.time()res = f(*args, **kwargs)end_time = time.time()print('%s函數運行時間:%.2f' % (f.__name__, end_time - start_time))return res return wrapperdef get_addr(ip): url = 'http://ip-api.com/json/%s' % (ip) urlObj = urlopen(url) # 服務端返回的頁面信息, 此處為字符串類型 pageContent = urlObj.read().decode(’utf-8’) # 2. 處理Json數據 import json # 解碼: 將json數據格式解碼為python可以識別的對象; dict_data = json.loads(pageContent) print('''%s 所在城市: %s 所在國家: %s''' % (ip, dict_data[’city’], dict_data[’country’]))@timeitdef main(): ips = [’12.13.14.%s’ % (i + 1) for i in range(10)] for ip in ips:get_addr(ip)if __name__ == ’__main__’: main()

python 實現多線程的三種方法總結

時間需要138.91秒。

-使用多線程

import threadingimport timefrom urllib.request import urlopendef timeit(f): def wrapper(*args, **kwargs):start_time = time.time()res = f(*args, **kwargs)end_time = time.time()print('%s函數運行時間:%.2f' % (f.__name__, end_time - start_time))return res return wrapperdef get_addr(ip): url = 'http://ip-api.com/json/%s' % (ip) urlObj = urlopen(url) # 服務端返回的頁面信息, 此處為字符串類型 pageContent = urlObj.read().decode(’utf-8’) # 2. 處理Json數據 import json # 解碼: 將json數據格式解碼為python可以識別的對象; dict_data = json.loads(pageContent) print('''%s 所在城市: %s 所在國家: %s''' % (ip, dict_data[’city’], dict_data[’country’]))@timeitdef main(): ips = [’12.13.14.%s’ % (i + 1) for i in range(10)] threads = [] for ip in ips:# 實例化10個對象,target=目標函數名,args=目標函數參數(元組格式)t = threading.Thread(target=get_addr, args=(ip, ))threads.append(t)t.start()# 等待所有子線程結束再運行主線程 [thread.join() for thread in threads]if __name__ == ’__main__’: main()

python 實現多線程的三種方法總結 python 實現多線程的三種方法總結

3.重寫run方法

重寫run方法, 實現多線程, 因為start方法執行時, 調用的是run方法;run方法里面編寫的內容就是你要執行的任務;

import threadingimport time# 重寫一個類,繼承于threading.Threadclass MyThread(threading.Thread): def __init__(self, jobName):super(MyThread, self).__init__()self.jobName = jobName # 重寫run方法, 實現多線程, 因為start方法執行時, 調用的是run方法; # run方法里面編寫的內容就是你要執行的任務; def run(self):print('這是一個需要執行的任務%s。。。。。' %(self.jobName))print('當前線程的個數:', threading.active_count() )time.sleep(1)print('當前線程的信息:', threading.current_thread())if __name__ == ’__main__’: t1 = MyThread('name1') t2 = MyThread('name2') t1.start() t2.start() t1.join() t2.join() print('程序執行結束.....')

重寫run方法實現剛才爬蟲多線程案例

import threadingimport timefrom urllib.request import urlopendef timeit(f): def wrapper(*args, **kwargs):start_time = time.time()res = f(*args, **kwargs)end_time = time.time()print('%s函數運行時間:%.2f' % (f.__name__, end_time - start_time))return res return wrapperclass MyThread(threading.Thread): def __init__(self, ip):super(MyThread, self).__init__()self.ip = ip def run(self):url = 'http://ip-api.com/json/%s' % (self.ip)urlObj = urlopen(url)# 服務端返回的頁面信息, 此處為字符串類型pageContent = urlObj.read().decode(’utf-8’)# 2. 處理Json數據import json# 解碼: 將json數據格式解碼為python可以識別的對象;dict_data = json.loads(pageContent)print(''' %s所在城市: %s所在國家: %s''' % (self.ip, dict_data[’city’], dict_data[’country’]))@timeitdef main(): ips = [’12.13.14.%s’ % (i + 1) for i in range(10)] threads = [] for ip in ips:# 實例化自己重寫的類t = MyThread(ip)threads.append(t)t.start() [thread.join() for thread in threads]if __name__ == ’__main__’: main()

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 医养体检包_公卫随访箱_慢病随访包_家签随访包_随访一体机-济南易享医疗科技有限公司 | 猎头招聘_深圳猎头公司_知名猎头公司 | 中式装修设计_室内中式装修_【云臻轩】中式设计机构 | 24位ADC|8位MCU-芯易德科技有限公司 | 不锈钢复合板厂家_钛钢复合板批发_铜铝复合板供应-威海泓方金属复合材料股份有限公司 | 电动手术床,医用护理床,led手术无影灯-曲阜明辉医疗设备有限公司 | 99文库_实习生实用的范文资料文库站 | 线材成型机,线材折弯机,线材成型机厂家,贝朗自动化设备有限公司1 | 木材烘干机,木炭烘干机,纸管/佛香烘干设备-河南蓝天机械制造有限公司 | 双工位钻铣攻牙机-转换工作台钻攻中心-钻铣攻牙机一体机-浙江利硕自动化设备有限公司 | 水冷式工业冷水机组_风冷式工业冷水机_水冷螺杆冷冻机组-深圳市普威机械设备有限公司 | 上海皓越真空设备有限公司官网-真空炉-真空热压烧结炉-sps放电等离子烧结炉 | 应急灯_消防应急灯_应急照明灯_应急灯厂家-大成智慧官网 | 电动葫芦|环链电动葫芦-北京凌鹰名优起重葫芦 | 361°官方网站| 电缆隧道在线监测-智慧配电站房-升压站在线监测-江苏久创电气科技有限公司 | 招商帮-一站式网络营销服务|互联网整合营销|网络推广代运营|信息流推广|招商帮企业招商好帮手|搜索营销推广|短视视频营销推广 | 尾轮组_头轮组_矿用刮板_厢式刮板机_铸石刮板机厂家-双驰机械 | 工程管道/塑料管材/pvc排水管/ppr给水管/pe双壁波纹管等品牌管材批发厂家-河南洁尔康建材 | 蓝米云-专注于高性价比香港/美国VPS云服务器及海外公益型免费虚拟主机 | 建大仁科-温湿度变送器|温湿度传感器|温湿度记录仪_厂家_价格-山东仁科 | 浙江华锤电器有限公司_地磅称重设备_防作弊地磅_浙江地磅售后维修_无人值守扫码过磅系统_浙江源头地磅厂家_浙江工厂直营地磅 | 整车VOC采样环境舱-甲醛VOC预处理舱-多舱法VOC检测环境仓-上海科绿特科技仪器有限公司 | 字典-新华字典-在线字典查字-字典趣 | 包塑丝_高铁绑丝_地暖绑丝_涂塑丝_塑料皮铁丝_河北创筹金属丝网制品有限公司 | 运动木地板厂家_体育木地板安装_篮球木地板选购_实木运动地板价格 | 物联网卡_物联网卡购买平台_移动物联网卡办理_移动联通电信流量卡通信模组采购平台? | 厂房出租_厂房出售_产业园区招商_工业地产&nbsp;-&nbsp;中工招商网 | CNC机加工-数控加工-精密零件加工-ISO认证厂家-鑫创盟 | 水压力传感器_数字压力传感器|佛山一众传感仪器有限公司|首页 | 韦伯电梯有限公司| 澳威全屋定制官网|极简衣柜十大品牌|衣柜加盟代理|全屋定制招商 百度爱采购运营研究社社群-店铺托管-爱采购代运营-良言多米网络公司 | 美的商用净水器_美的直饮机_一级代理经销商_Midea租赁价格-厂家反渗透滤芯-直饮水批发品牌售后 | PC阳光板-PC耐力板-阳光板雨棚-耐力板雨棚,厂家定制[优尼科板材] | 武汉创亿电气设备有限公司_电力检测设备生产厂家 | 胃口福饺子加盟官网_新鲜现包饺子云吞加盟 - 【胃口福唯一官网】 | 自动检重秤-动态称重机-重量分选秤-苏州金钻称重设备系统开发有限公司 | 橡胶电子拉力机-塑料-微电脑电子拉力试验机厂家-江苏天源 | TPU薄膜_TPU薄膜生产厂家_TPU热熔胶膜厂家定制_鑫亘环保科技(深圳)有限公司 | 北京遮阳网-防尘盖土网-盖土草坪-迷彩网-防尘网生产厂家-京兴科技 | 压力变送器-上海武锐自动化设备有限公司|