Python异步编程4:协程函数,协程对象,await关键字

Python011

Python异步编程4:协程函数,协程对象,await关键字,第1张

协程函数:async def 函数名。3.5+

协程对象:执行协程函数()得到的协程对象。

    3.5之后的写法:

    3.7之后的写法:更简便

await后面 跟 可等待的对象。(协程对象,Future,Task对象 约等于IO等待)

await实例2:串行执行。 一个协程函数里面可以支持多个await ,虽然会串行,但是如果有其他协程函数,任务列表也在执行,依然会切换。只是案例中的main对应执行的others1和others2串行 。 await会等待对象的值得到之后才继续往下走。

由于python是一种解释性脚本语言,python的多线程在运行过程中始终存在全局线程锁。

简单的来说就是在实际的运行过程中,python只能利用一个线程,因此python的多线程并不达到C语言多线程的性能。

可以使用多进程来代替多线程,但需要注意的是多进程最好不要涉及到例如文件操作的频繁操作IO的功能。

python 虚拟环境管理工具

错误提出及讨论:

解决方案:

运行 python manage.py celery worker -l INFO 时报错:

参考:

解决方案:

说明:这是因为在 python 3.7 中将 async 作为了关键字,所以当 py 文件中出现类似 from . import async, base 这类不符合python语法的语句时,Python会报错。

解决: