Python run()函数和start()函数的比较和差别介绍

 更新时间:2020年05月03日 18:41:12   作者:AGUICHINESE  
这篇文章主要介绍了Python run()函数和start()函数的比较和差别介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

Python客栈送红包、纸质书

run() 方法并不启动一个新线程,就是在主线程中调用了一个普通函数而已。

start() 方法是启动一个子线程,线程名就是自己定义的name。

因此,如果你想启动多线程,就必须使用start()方法。

请看实例:(源代码)

1 使用run()方法启动线程,它打印的线程名是MainThread,也就是主线程。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import threading,time
 
def worker():
count = 1
while True:
if count >= 4:
break
time.sleep(1)
count += 1
print(“thread name = {}”.format(threading.current_thread().name))
 
print(“Start Test run()”)
t1 = threading.Thread(target=worker, name=“MyTryThread”)
t1.run()
 
print(“run() test end”)

运行结果:

1
2
3
4
5
Start Test run()
thread name = MainThread
thread name = MainThread
thread name = MainThread
run() test end

2 使用start()方法启动的线程名是我们定义线程对象时设置的name="MyThread"的值,如果没有设置name参数值,则会打印系统分配的Thread-1,Thread-2…这样的名称。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import threading,time
 
def worker():
count = 1
while True:
if count >= 4:
break
time.sleep(2)
count += 1
print(“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”)

运行结果:

1
2
3
4
5
Start Test start()
thread name = MyTryThread
thread name = MyTryThread
thread name = MyTryThread
start() test end

3 两个子线程都用run()方法启动,但却是先运行t1.run(),运行完之后才按顺序运行t2.run(),两个线程都工作在主线程,没有启动新线程,thread ID都是一样的,因此,run()方法仅仅是普通函数调用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import threading,time
 
def worker():
count = 1
while True:
if count >= 4:
break
time.sleep(2)
count += 1
print(“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”)

运行结果:

1
2
3
4
5
6
7
8
Start Test run()
thread name = MainThread, thread id = 3920
thread name = MainThread, thread id = 3920
thread name = MainThread, thread id = 3920
thread name = MainThread, thread id = 3920
thread name = MainThread, thread id = 3920
thread name = MainThread, thread id = 3920
run() test end

4 使用start()方法启动了两个新的子线程并交替运行,每个子进程ID也不同。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import threading,time
 
def worker():
count = 1
while True:
if count >= 4:
break
time.sleep(2)
count += 1
print(“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”)

运行结果:

1
2
3
4
5
6
7
8
Start Test start()
thread name = MyTryThread1, thread id = 4628
thread name = MyTryThread2, thread id = 872
thread name = MyTryThread1, thread id = 4628
thread name = MyTryThread2, thread id = 872
thread name = MyTryThread1, thread id = 4628
thread name = MyTryThread2, thread id = 872
start() test end

补充知识:python 文件操作常用轮子

path

注意: 对于任何需要处理文件名的问题,都应该使用os.path模块而不是字符串操作。两个原因,os.path能够处理移植性问题,如windows,linux。 另一个原因,不要重复造轮子

获取文件名

1
2
3
import os
filename = os.path.basename(filepath)
print(filename)

获取文件当前文件夹目录

filename = os.path.dirname(filepath)

同时获取文件夹和文件名

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

split 文件扩展名

1
2
3
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

1
2
3
4
5
6
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

获取文件大小

1
2
3
import os
size = os.path.getsize(filepath)
print(size)

获取文件夹大小

1
2
3
4
5
6
7
8
9
10
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

1
2
3
4
5
import time
t1 = os.path.gettime('/etc/passwd')
# t1 1272478234.0
t2 = time.ctime(t1)
# t2 'Wed Apr 28 12:10:05 2010'

以上这篇Python run()函数和start()函数的比较和差别介绍就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
蓄力AI

微信公众号搜索 “ 脚本之家 ” ,选择关注

程序猿的那些事、送书等活动等着你

原文链接:https://blog.csdn.net/AGUICHINESE/article/details/83269747

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!

相关文章

  • Python http接口自动化测试框架实现方法示例

    Python http接口自动化测试框架实现方法示例

    这篇文章主要介绍了Python http接口自动化测试框架实现方法,结合实例形式分析了Python针对http接口测试的相关实现与使用操作技巧,需要的朋友可以参考下
    2018-12-12
  • PyTorch的安装与使用示例详解

    PyTorch的安装与使用示例详解

    本文介绍了热门AI框架PyTorch的conda安装方案,与简单的自动微分示例,并顺带讲解了一下PyTorch开源Github仓库中的两个Issue内容,需要的朋友可以参考下
    2024-05-05
  • 详解Python设计模式之策略模式

    详解Python设计模式之策略模式

    这篇文章主要介绍了Python设计模式之策略模式的相关知识,文中讲解非常详细,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • 基于Python绘制三种不同的中国结

    基于Python绘制三种不同的中国结

    马上就要迎来新年了,就绘制了几个中国结,嘿嘿!本文为大家整理了三个绘制中国结的方法,文中的示例代码讲解详细,快跟随小编一起动手尝试一下吧
    2023-01-01
  • Python爬虫实现爬取京东手机页面的图片(实例代码)

    Python爬虫实现爬取京东手机页面的图片(实例代码)

    下面小编就为大家分享一篇Python爬虫实现爬取京东手机页面的图片实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-11-11
  • Python正则捕获操作示例

    Python正则捕获操作示例

    这篇文章主要介绍了Python正则捕获操作,结合具体实例形式分析了Python基于正则表达式的分组、捕获、替换等相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • Pytest Allure的安装与应用教程详解

    Pytest Allure的安装与应用教程详解

    Allure 是由 Java 语⾔开发的⼀个轻量级,灵活的测试报告⼯具,这篇文章主要为大家详细介绍了Allure的安装与具体应用,感兴趣的可以了解下
    2024-03-03
  • Python装饰器实现函数运行时间的计算

    Python装饰器实现函数运行时间的计算

    这篇文章主要为大家详细介绍了Python函数运行时间的计算,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • Python 虚拟环境工作原理解析

    Python 虚拟环境工作原理解析

    这篇文章主要介绍了Python 虚拟环境工作原理解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Python判断对象是否为文件对象(file object)的三种方法示例

    Python判断对象是否为文件对象(file object)的三种方法示例

    这篇文章主要介绍了Python判断对象是否为文件对象(file object)的三种方法示例,https://www.pythontab.com/html/2018/pythonhexinbiancheng_1015/1362.html
    2019-04-04

最新评论