并发与并行与异步asyncio,select IO多路复用

并发:就是看上去像在一起执行,其实是cpu分了不同的时间片到不同进程或者是线程让我们看上去像是一起执行,其实不一定是同时运行
并行:就是同一时间在运行多个进程或者是线程,必须是多核相当于是一核跑一个线程或者是进程

同步:就是必须等到上一个stage跑完才能跑next stage
异步:就是不需要等到上一个进程执行结束,就可以执行,效率较高。

多道技术,是切换任务,保存任务状态
cpu遇到 IO 时切换。
进程 资源单位

def task(*args):
    print(args)
if __name__ == '__main__':
    from multiprocessing import Process
    p = Process(target=task,args=(1,2))
    p.start()
	print("主")
	p.join()#等待子进程执行结束。
import threading
import asyncio
@asyncio.coroutine
def hello():
    print("heelo 1 {}".format(threading.current_thread()))
    yield from asyncio.sleep(1)
    print("hello 2{}".format(threading.current_thread()))

loop = asyncio.get_event_loop()
tasks= [hello(),hello()]
loop.run_until_complete(asyncio.wait(tasks))
loop.close()

select 监管sock对象或者是conn对象
sock = socket.scoket()
conn = accept()

import select
import socket
server = socket.socket()
server.bind(("127.0.0.1",8080))
server.listen(7)
server.setblocking(False)
read_list = [server]
while True:
    #r_list is the return value of socket
    r_list,w_list,x_list = select.select(read_list,[],[])
    print(r_list)
    for i in r_list:
    	#如果是server 则accept
        if i is server:
            con,addr = i.accept()
            read_list.append(con)
        else:
            res = i.recv(1024)
            if len(res) == 0:
                i.close()
                read_list.remove(i)
                continue
            print(res)
            i.send(b'asdasdas')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值