并发:就是看上去像在一起执行,其实是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')