同步异步描述的事任务的提交方式 描述的事一段代码或者函数
同步:任务提交后,原地等待任务的返回结果,等待的过程中不做任何事(干等)
程序层面上表现出来的感觉就是卡住了
例子:
import time
def func():
time.sleep(3)
print('hello world')
if __name++=='__main__':
res=func()
print('hahaha')
异步:任务提交后,不原地等待任务的返回结果,直接去做其他事情
我提交的任务结果如何获取?
任务的返回结果有一个异步回调机制自动处理
阻塞非阻塞:描述的程序的运行状态
阻塞:阻塞态
非阻塞:就绪态、运行态
理想状态:我们应该让我们的写的代码永远处于就绪态和运行态之间切换
上述概念的组合:最高效的一种组合就是异步非阻塞
如何创建进程:
第一种:用这种的比较多
from multiprocessing import Process 是一个类,里面需要传:目标(要把谁当作进程来创建
import time
def task(name):
print('%s is running'%name)
time.slrrp(3)
print('%s isover 'name)
if __name__=='__main__':
#1.创建一个对象
p=Process(target=task,srgs=('iason',))
#容器类型 里面无论有几个元素 建议一定要用逗号隔开 哪怕只有一个元素
#2.开启进程
p.start()#告诉操作系统帮我们常见一个进程 异步
print('主')
第二种:
from multiprocessing import Process
import time
class Myprocess(Process):
def run(self):
print('hello')
time.sleep(3)
print('zhuzhu')
if __name__=='__main__':
p=Myprocess()
p.start()
print('主')
"""
windows操作系统下 创建进程一定要在main内创建
因为Windows下创建进程类似于模块导入的方式
会从上往下依次执行代码
Linux中则是直接将代码完整的拷贝一份
所以Windows下创建类似于双开一定要在 __name__=='__main__':后写
"""
总结:创建进程就是在内存中申请一块内存空间 将需要运行的代码丢进去
一个进程对应在内存中就是一块独立的内存空间
多个进程对应在内存中就是多个独立的内存空间
进程与进程之间数据默认情况下是无法直接交互的,如果想交互可以借助第三方工具、模块
join方法:
是让主进程的代码等待子代码运行结束之后再继续运行,不影响其他子进程的执行
例如:
from multiprocessing import Process 是一个类,里面需要传:目标(要把谁当作进程来创建
import time
def task(name):
print('%s is running'%name)
time.slrrp(3)
print('%s isover 'name)
if __name__=='__main__':
#1.创建一个对象
p=Process(target=task,srgs=('iason',))
p.start()#告诉操作系统帮我们创建一个进程 异步
p.join()
print('主')
标签:__,异步,同步,name,阻塞,进程,time,print From: https://www.cnblogs.com/97zs/p/17702860.html