Python3中利用Queue实现进程间的通信

Python3中利用Queue实现进程间的通信前言在此篇文章中 讲到了 http 服务器 进程线程 以及如何高效的利用多线程完成任务 实现资源的高效利用 HTTP 协议 success set cookie 服务器返回给客户的 cookie 存储在本地 标名一个用户

大家好,欢迎来到IT知识分享网。

前言

在此篇文章中,讲到了http服务器、进程线程,以及如何高效的利用多线程完成任务,实现资源的高效利用。

HTTP协议

Python3中利用Queue实现进程间的通信

Python3中利用Queue实现进程间的通信

success set_cookie服务器返回给客户的cookie ,存储在本地,标名一个用户 。

HTTP服务器

import socket def server_client(new_socket): #为这个客户端返回数据 #1.接受浏览器发过来的请求,http 请求,并且打印 result = new_socket.recv(1024) print(result) #2.返回 http 格式数据,给浏览器 #2.1 准备发送给浏览器数据 header response = "HTTP/1.1 200 OK\r\n" response +="\r\n" #这个是之间的空一行 #2.2 准备发送给浏览器数据 body response += "<h1>hello world</h1>" new_socket.send(response.encode("utf-8")) #3.关闭套接字 new_socket.close() def main(): #1.创建套接字 tcp_server=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #2.绑定端口 tcp_server.bind(("",7890)) #3.设置为监听 tcp_server.listen(128) while 1: #4.等待客户端链接 new_socket,client_addr=tcp_server.accept() #5.为这个客户端服务 server_client(new_socket) #这里直接写一个函数 tcp_server.close() if __name__ == "__main__": main()

多任务实现

import time def sing(): for i in range(5): print("正在唱歌") time.sleep(1) def dance(): for i in range(5): print("正在跳舞") time.sleep(1) def main(): sing() dance() if __name__ == "__main__": main()

多线程一起执行,当执行的时间足够短,就能构造出假的多线程:

  • 并行:真的多任务
  • 并发:假的多任务

多线程详细讲解

一个程序运行起来之后,一定有一个执行代码的东西,这个东西称之为线程。

Python3中利用Queue实现进程间的通信

Python3中利用Queue实现进程间的通信

主线程和子线程都可以单独的执行代码。

查看线程数量

enumerate枚举:

Python3中利用Queue实现进程间的通信

线程的运行是没有先后顺序的,线程在执行的时候会抢资源,这就是竞争资源问题,我们可以利用sleep()函数来进行线程的优先执行,如果创建threading时执行的函数,运行结束意味着子线程结束。当主线程死亡,意味着程序结束。因此 python程序中,主线程会等待着子线程结束之后, 主线程才会结束。

Python3中利用Queue实现进程间的通信

进程间通信

socket是进程间通信桥梁,queue队列先进先出。

Python3中利用Queue实现进程间的通信

下面写一个例子,实现一个进程写一个进程读取:

Python3中利用Queue实现进程间的通信

Python3中利用Queue实现进程间的通信

小结

对于进程和线程的高效利用,是每一个安全从业者所必不可少的技能,多线程、死锁、并发、进程池等问题也需要我们每个人都很清楚的掌握。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/94864.html

(0)
上一篇 2024-10-30 07:33
下一篇 2024-10-30 11:15

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信