标签:*args 进程和线程 完成 font cep expand 单元 名称 下载
下面用一个下载文件的例子来说明使用多进程和不使用多进程到底有什么差别,先看看下面的代码。
from random import randint
from time import time, sleep
def download_task(filename):
print(‘开始下载%s...‘ % filename)
time_to_download = randint(5, 10)
sleep(time_to_download)
print(‘%s下载完成! 耗费了%d秒‘ % (filename, time_to_download))
def main():
start = time()
download_task(‘Python从入门到住院.pdf‘)
download_task(‘Peking Hot.avi‘)
end = time()
print(‘总共耗费了%.2f秒.‘ % (end - start))
if __name__ == ‘__main__‘:
main()
4、多线程概念:
在Python早期的版本中就引入了thread模块(现在名为_thread)来实现多线程编程,然而该模块过于底层,而且很多功能都没有提供,因此目前的多线程开发我们推荐使用threading模块,该模块对多线程编程提供了更好的面向对象的封装。我们把刚才下载文件的例子用多线程的方式来实现一遍。
from random import randint
from threading import Thread
from time import time, sleep
def download(filename):
print(‘开始下载%s...‘ % filename)
time_to_download = randint(5, 10)
sleep(time_to_download)
print(‘%s下载完成! 耗费了%d秒‘ % (filename, time_to_download))
def main():
start = time()
t1 = Thread(target=download, args=(‘Python从入门到住院.pdf‘,))
t1.start()
t2 = Thread(target=download, args=(‘Peking Hot.avi‘,))
t2.start()
t1.join()
t2.join()
end = time()
print(‘总共耗费了%.3f秒‘ % (end - start))
if __name__ == ‘__main__‘:
main()
python中尝试执行try 中的代码,如果有错,则被except 捕获,但是整个程序不会崩溃
* args不定长参数 相当于位置传参
** 相当于带参数名称的传参
*args 一定要放在前面
标签:*args 进程和线程 完成 font cep expand 单元 名称 下载
原文地址:https://www.cnblogs.com/yzm1020/p/11329502.html