进程和线程

补充  函数的生成器

Yield:可将函数变成一个迭代器(即生成器)

Try……except:尝试执行try中的代码,若有错,则被except捕获,但整个程序不会崩溃。

1.不定长参数

  传参方式:位置传参、带参数名的传参

1)args (位置传参)

  def h(*args):

    print(args)

  h(1,2,3,4,5,6)

注:输出为元组

2)**kwargs (带参数名的传参)

  def h(**kwargs):

    print(kwargs)

  h(a=1,b=2,c=3)

注:输出为字典

3)不定长参数

  def h(*args,**kwargs):

    print(args)

    print(kwargs)

  h(1,2,3,a=1,b=2,c=3)

4)装饰器带参数

  不定长参数与装饰器结合使用(重要的参数要用带参数名的来进行传参,从而让**kwargs捕获):

2.线程和进程

  multiprocessing是Python提供的一个跨平台的多进程模块,通过它可以很方便地编写多进程程序,在不同的平台(Unix/Linux, Windows)都可以执行。

  

  从上面的例子可以看出,如果程序中的代码只能按顺序一点点的往下执行,那么即使执行两个毫不相关的下载任务,也需要先等待一个文件下载完成后才能开始下一个下载任务,很显然这并不合理也没有效率。

   下面我们通过Process类创建了进程对象,通过target参数我们传入一个函数来表示进程启动后要执行的代码,后面的args是一个元组,它代表了传递给函数的参数。Process对象的start方法用来启动进程,而join方法表示等待进程执行结束。运行上面的代码可以明显发现两个下载任务“同时”启动了,而且程序的执行时间将大大缩短,不再是两个任务的时间总和。

2)多进程的库

原文地址:https://www.cnblogs.com/liujing17/p/11328612.html