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

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

Python run()函數和start()函數的比較和差別介紹

瀏覽:9日期:2022-07-26 14:49:36

run() 方法并不啟動一個新線程,就是在主線程中調用了一個普通函數而已。

start() 方法是啟動一個子線程,線程名就是自己定義的name。

因此,如果你想啟動多線程,就必須使用start()方法。

請看實例:(源代碼)

1 使用run()方法啟動線程,它打印的線程名是MainThread,也就是主線程。

import threading,timedef worker():count = 1while True:if count >= 4:breaktime.sleep(1)count += 1print(“thread name = {}”.format(threading.current_thread().name))print(“Start Test run()”)t1 = threading.Thread(target=worker, name=“MyTryThread”)t1.run()print(“run() test end”)

運行結果:

Start Test run()thread name = MainThreadthread name = MainThreadthread name = MainThreadrun() test end

2 使用start()方法啟動的線程名是我們定義線程對象時設置的name='MyThread'的值,如果沒有設置name參數值,則會打印系統分配的Thread-1,Thread-2…這樣的名稱。

import threading,timedef worker():count = 1while True:if count >= 4:breaktime.sleep(2)count += 1print(“thread name = {}”.format(threading.current_thread().name)) # 當前線程名print(“Start Test start()”)t = threading.Thread(target=worker, name=“MyTryThread”)t.start()t.join()print(“start() test end”)

運行結果:

Start Test start()thread name = MyTryThreadthread name = MyTryThreadthread name = MyTryThreadstart() test end

3 兩個子線程都用run()方法啟動,但卻是先運行t1.run(),運行完之后才按順序運行t2.run(),兩個線程都工作在主線程,沒有啟動新線程,thread ID都是一樣的,因此,run()方法僅僅是普通函數調用。

import threading,timedef worker():count = 1while True:if count >= 4:breaktime.sleep(2)count += 1print(“thread name = {}, thread id = {}”.format(threading.current_thread().name,threading.current_thread().ident))print(“Start Test run()”)t1 = threading.Thread(target=worker, name=“t1”)t2 = threading.Thread(target=worker, name=‘t2’)t1.run()t2.run()print(“run() test end”)

運行結果:

Start Test run()thread name = MainThread, thread id = 3920thread name = MainThread, thread id = 3920thread name = MainThread, thread id = 3920thread name = MainThread, thread id = 3920thread name = MainThread, thread id = 3920thread name = MainThread, thread id = 3920run() test end

4 使用start()方法啟動了兩個新的子線程并交替運行,每個子進程ID也不同。

import threading,timedef worker():count = 1while True:if count >= 4:breaktime.sleep(2)count += 1print(“thread name = {}, thread id = {}”.format(threading.current_thread().name,threading.current_thread().ident))print(“Start Test start()”)t1 = threading.Thread(target=worker, name=“MyTryThread1”)t2 = threading.Thread(target=worker, name=“MyTryThread2”)t1.start()t2.start()t1.join()t2.join()print(“start() test end”)

運行結果:

Start Test start()thread name = MyTryThread1, thread id = 4628thread name = MyTryThread2, thread id = 872thread name = MyTryThread1, thread id = 4628thread name = MyTryThread2, thread id = 872thread name = MyTryThread1, thread id = 4628thread name = MyTryThread2, thread id = 872start() test end

補充知識:python 文件操作常用輪子

path

注意: 對于任何需要處理文件名的問題,都應該使用os.path模塊而不是字符串操作。兩個原因,os.path能夠處理移植性問題,如windows,linux。 另一個原因,不要重復造輪子

獲取文件名

import osfilename = os.path.basename(filepath)print(filename)

獲取文件當前文件夾目錄

filename = os.path.dirname(filepath)

同時獲取文件夾和文件名

dirname, filename = os.path.split(filepath)

split 文件擴展名

path_without_ext, ext = os.path.splitext(filepath)# e.g ’hello/world/read.txt’ then# path_without_ext = hello/world/read, ext = .txt

遍歷文件夾下所有文件方法

import glob

pyfiles = glob.glob(’*.py’)

or

def getAllFiles(filePath, filelist=[]): for root, dirs, files in os.walk(filePath): for f in files: filelist.append(os.path.join(root, f)) print(f) return filelist

判斷是否為文件 file

os.path.isfile(’/etc/passwd’)

判斷是否為文件夾 folder

os.path.isdir(’/etc/passwd’)

是否是軟鏈接

os.path.islink(’/usr/local/bin/python3’)

軟鏈接真正指向的是

os.path.realpath(’/usr/local/bin/python3’)

size

獲取文件大小

import ossize = os.path.getsize(filepath)print(size)

獲取文件夾大小

import os def getFileSize(filePath, size=0): for root, dirs, files in os.walk(filePath): for f in files: size += os.path.getsize(os.path.join(root, f)) print(f) return size print(getFileSize('.'))

time

import timet1 = os.path.gettime(’/etc/passwd’)# t1 1272478234.0t2 = time.ctime(t1)# t2 ’Wed Apr 28 12:10:05 2010’

以上這篇Python run()函數和start()函數的比較和差別介紹就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 耐酸碱泵-自吸耐酸碱泵型号「品牌厂家」立式耐酸碱泵价格-昆山国宝过滤机有限公司首页 | 厦门ISO认证|厦门ISO9001认证|厦门ISO14001认证|厦门ISO45001认证-艾索咨询专注ISO认证行业 | 专业生产动态配料系统_饲料配料系统_化肥配料系统等配料系统-郑州鑫晟重工机械有限公司 | 除尘器布袋骨架,除尘器滤袋,除尘器骨架,电磁脉冲阀膜片,卸灰阀,螺旋输送机-泊头市天润环保机械设备有限公司 | 波纹补偿器_不锈钢波纹补偿器_巩义市润达管道设备制造有限公司 | 定量包装机,颗粒定量包装机,粉剂定量包装机,背封颗粒包装机,定量灌装机-上海铸衡电子科技有限公司 | 电脑刺绣_绣花厂家_绣花章仔_织唛厂家-[源欣刺绣]潮牌刺绣打版定制绣花加工厂家 | 成都软件开发_OA|ERP|CRM|管理系统定制开发_成都码邻蜀科技 | 上海新光明泵业制造有限公司-电动隔膜泵,气动隔膜泵,卧式|立式离心泵厂家 | 转向助力泵/水泵/发电机皮带轮生产厂家-锦州华一精工有限公司 | 包塑软管|金属软管|包塑金属软管-闵彬管业 | 儋州在线-儋州招聘找工作、找房子、找对象,儋州综合生活信息门户! | 宽带办理,电信宽带,移动宽带,联通宽带,电信宽带办理,移动宽带办理,联通宽带办理 | BESWICK球阀,BESWICK接头,BURKERT膜片阀,美国SEL继电器-东莞市广联自动化科技有限公司 | 定量包装机,颗粒定量包装机,粉剂定量包装机,背封颗粒包装机,定量灌装机-上海铸衡电子科技有限公司 | 合肥卓创建筑装饰,专业办公室装饰、商业空间装修与设计。 | 讲师宝经纪-专业培训机构师资供应商_培训机构找讲师、培训师、讲师经纪就上讲师宝经纪 | 螺杆真空泵_耐腐蚀螺杆真空泵_水环真空泵_真空机组_烟台真空泵-烟台斯凯威真空 | 量子管通环-自清洗过滤器-全自动反冲洗过滤器-北京罗伦过滤技术集团有限公司 | 玻璃钢格栅盖板|玻璃钢盖板|玻璃钢格栅板|树篦子-长沙川皖玻璃钢制品有限公司 | 药品/药物稳定性试验考察箱-埃里森仪器设备(上海)有限公司 | 建筑工程资质合作-工程资质加盟分公司-建筑资质加盟 | 数控专用机床,专用机床,自动线,组合机床,动力头,自动化加工生产线,江苏海鑫机床有限公司 | 中国在职研究生招生信息网| ptc_浴霸_大巴_干衣机_呼吸机_毛巾架_电动车加热器-上海帕克 | 淬火设备-钎焊机-熔炼炉-中频炉-锻造炉-感应加热电源-退火机-热处理设备-优造节能 | 十二星座查询(性格特点分析、星座运势解读) - 玄米星座网 | 舞台木地板厂家_体育运动木地板_室内篮球馆木地板_实木运动地板厂家_欧氏篮球地板推荐 | PE拉伸缠绕膜,拉伸缠绕膜厂家,纳米缠绕膜-山东凯祥包装 | 合肥防火门窗/隔断_合肥防火卷帘门厂家_安徽耐火窗_良万消防设备有限公司 | ALC墙板_ALC轻质隔墙板_隔音防火墙板_轻质隔墙材料-湖北博悦佳 | 法钢特种钢材(上海)有限公司 - 耐磨钢板、高强度钢板销售加工 阀门智能定位器_电液动执行器_气动执行机构-赫尔法流体技术(北京)有限公司 | PCB厂|线路板厂|深圳线路板厂|软硬结合板厂|电路板生产厂家|线路板|深圳电路板厂家|铝基板厂家|深联电路-专业生产PCB研发制造 | 五轴加工中心_数控加工中心_铝型材加工中心-罗威斯 | 中原网视台| HDPE土工膜,复合土工膜,防渗膜价格,土工膜厂家-山东新路通工程材料有限公司 | 换链神器官网-友情链接交换、购买交易于一体的站长平台 | 精密模具制造,注塑加工,吹塑和吹瓶加工,EPS泡沫包装生产 - 济南兴田塑胶有限公司 | 纯化水设备-纯水设备-超纯水设备-[大鹏水处理]纯水设备一站式服务商-东莞市大鹏水处理科技有限公司 | 耐酸泵,耐酸泵厂家-淄博华舜耐腐蚀真空泵 | 河南中专学校|职高|技校招生-河南中职中专网|