JoinableQueue
-
可等待的连接
-
特点
- 比普通的进程队列功能增强,多了task_done与join方法
-
用法
-
创建
jq = multiprocessing.JoinableQueue(容量)
-
取数据时
jq.get() jq.task_done()
取出数据后一定要调一下task_done(),否则计数不减的话,join()无法感知
-
等待连接
jq.join()
当队列中有数据时会阻塞,当队列中的数据计数为零时,会解阻塞
-
进程池
-
优点:提升效率,减少开劈进程与销毁进程的时间开销
-
用法:
-
创建对象
进程池对象 = multiprocessing.Pool(池子的数量)
-
两种执行方式
-
同步
r = 进程池.apply(函数名, args=(参数1,))
可以让函数直接跑起来的,但是是同步的。
返回值r 就是函数的返回值
-
异步的
r = 进程池.apply_async(函数名, args(参数1,))
注,这个r只是一个对象,并且这种方式的调用,并不执行函数内部的代码
如果希望执行
r2 = r.get()
通过get()方法,可以让异步的这种进程池对象运行起来。执行函数内部的代码。同时会获取返值.
函数的定义
-
-
函数的调用
函数名的本质
函数的返回值
-
什么是返回值
返回值就是一个函数运行结束后的返回结果 可以通过一个变量来接收函数的返回值 变量 = 函数名()
-
函数没有return的时候
它的返回值默认是
None
def show_num(): n = 1 n += 1 n = show_num() print(n)
-
函数有return的时候
该函数return的是什么,返回值就是什么
def show_num(): return 3 n = show_num() print(n)
函数的多值传参
位置传参
关键词传参
函数的执行顺序
函数的嵌套调用
闭包函数
-
闭包写法的注意点
- 函数嵌套式的
- 内部的函数会调用外部函数的变量
- 增加,外部函数outter会返回return内部函数的函数名inner
-
闭包的代码
def outter(): n = 100 def inner(): print(n) return inner
-
闭包的特点
- 延长了外部函数的局部变量的生命周期,即n的生命周期被延长了
装饰器