137 python|第八部分:并发网络编程网络编程下
Posted 缓缓而行
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了137 python|第八部分:并发网络编程网络编程下相关的知识,希望对你有一定的参考价值。
socket * socket * socket * data = conn.recv( data data == conn.send(socket * 图片完成了从客户端(下载)发送到了服务器(day11) 那么怎么解决粘包问题呢? 首先我们可以通过设置sleep控制发送速度: 3.5 TCP与UDP对比 01.传输特征 02.套接字编程区别 03.使用场景 参考资料 [1] 怎样区别交换机、路由器和猫 https://jingyan.baidu.com/article/046a7b3e15eb73f9c37fa96f.html [2] 计算机网络中的基本器件(网卡,集线器,交换机,路由器) https://www.cnblogs.com/mlgjb/p/8092991.html [3] 图解 | 原来这就是网络 https://www.cnblogs.com/flashsun/p/14266148.html [4] 图解 | 原来这就是TCP https://www.cnblogs.com/flashsun/p/14322660.html [5] 【TCP协议】(1)---TCP协议详解 https://www.cnblogs.com/qdhxhz/p/10267932.html [6] TCP的三次握手和四次挥手 https://www.cnblogs.com/zhonglongbo/p/12701607.html [7] 详解TCP连接的“三次握手”与“四次挥手”(上) https://www.cnblogs.com/AhuntSun-blog/p/12028636.html [8] 详解TCP连接的“三次握手”与“四次挥手”(下) https://www.cnblogs.com/AhuntSun-blog/p/12037852.html 公众号推荐 公众号:低并发编程 博客园:闪客sun 花样早餐展 阻塞的原因是产生了死锁。根据上面提到的死锁的避免方式,我们只要让死锁四个产生条件不要同时出现即可。 运行结果: 05 GIL(global interpreter lock)问题 5.1 概念 1.GIL问题与python语言本身没什么关系,属于解释器设置历史的问题。 2.在无阻塞状态下,多线程程序执行效率并不高,甚至还不如单线程。 3.python多线程只适用于执行有阻塞延迟的任务情形。 06 进程和线程的联系&区别 6.1 联系&区别 参考资料 拓展资料 花样早餐展 以上是关于137 python|第八部分:并发网络编程网络编程下的主要内容,如果未能解决你的问题,请参考以下文章 139 python|第八部分:并发网络编程多任务编程下--线程socket *
conn.send( msg = input( tcp_socket.send(msg.encode())
msg ==
data = tcp_socket.recv( conn,addr = tcp_socket.accept()
print( data = conn.recv( print( conn.send( conn.close() conn,addr = tcp_socket.accept()
data = conn.recv( conn.send( conn.close()True:
msg = input( tcp_socket = tcp_socket.connect(ADDR)
tcp_socket.send(msg.encode())
msg: data = tcp_socket.recv( tcp_socket.close()
q = conn.recv( key,value data.items():
key q:
conn.send(value.encode())
conn.send( sock = socket(AF_INET,SOCK_STREAM)
sock.bind(( sock.listen( conn,addr = sock.accept()
xy(conn) conn.close()
sock.close()
__name__ == main()
sock = socket()
sock.connect(ADDR)
sock.send(msg.encode())
data = sock.recv( sock.close()
data.decode()
msg = input( msg:
data = xy(msg)
print(__name__ == main()
fw = open( data = conn.recv( data:
fw.write(data)
fw.close()
sock = socket(AF_INET,SOCK_STREAM)
sock.bind(( sock.listen( conn,addr = sock.accept()
print( recv_image(conn) conn.close()
sock.close()
__name__ == main()
socket *
fr = open( data = fr.read( data:
sock.send(data)
fr.close()
sock = socket()
sock.connect(ADDR) send_image(sock) sock.close()
__name__ == main()
data = conn.recv( print(data.decode())
socket *
sock.send(item.encode())
sock.send(b"##") # 发送完data,向服务器发送##
sock.close()
139 python|第八部分:并发网络编程多任务编程下--线程
time sleep
i range( sleep( print(i range( sleep(threading Thread
time sleep
print( sleep(sec)
print(i range( t = Thread(target = func,
args = ( kwargs = )
t.start()threading Thread
time sleep
self.song = song
super().__init__()
i range( sleep( print(threading Threadfrom time sleepthreading
time
print(% threading.currentThread().getName())
event.wait() print(% threading.currentThread().getName())
threading Thread,Lock
lock.acquire() a != b: print( lock.release() lock.acquire() a += b += lock.release()time sleep
self.id = id
self.balance = balance
self.balance -= amount
self.balance += amount
self.balance
from_.lock.acquire() from_.get(amount) sleep( to.lock.acquire() to.put(amount) from_.lock.release() to.lock.release()
#一方给另一方转钱
trans(Peiqi,George,10)
print(\'Peiqi:\',George.getbalance())
print(\'George:\',Peiqi.getbalance())
进程和线程的联系&区别 类别 说明 联系 1.两者都是多任务编程,都能使用计算机多核资源 2.一个进程可以有多个分支线程,两者有包含关系 3.多个线程共享进程资源,在共享资源操作时往往需要同步互斥处理。 区别 1.进程的创建和删除消耗的计算机资源比线程多 2.进程空间独立,数据互不干扰,有专门的通信方法;线程使用全局变量通信 3.python线程存在GIL问题,但进程没有