python multiprocessing 和tcp
#用类方法 服务端 from socket import *from multiprocessing import Processimport os class Myprocess(Process): def __init__(self, conn): self.conn = conn super().__init__() def run(self): conn = self.conn start = True while start: try: print('启动子线程:%s' % os.getpid(), end='') data = conn.recv(1024) conn.send(data) print('线程编号:%s,data=%s' % (os.getpid(), data.decode('utf-8'))) except Exception as e: conn.close() start = False print('关闭了') conn.close() if __name__ == '__main__': # p=Myprocess('这是测试文件') # p.start() st = socket(AF_INET, SOCK_STREAM) host = '127.0.0.1' port = 8080 listen_number = 5 st.bind((host, port)) st.listen(listen_number) transcript = None while True: print('等待连接') conn, _ = st.accept() if conn != transcript: transcript = conn p = Myprocess(conn) p.start() print('连接成功') else: print('不知道:%s' % conn) st.close() #用函数方法 服务端
from multiprocessing import Processfrom socket import *import json, struct import os def process_communication(conn): while True: try: print('启动子线程:%s' % os.getpid(), end='') data = conn.recv(1024) conn.send(data) print('线程编号:%s,data=%s' % (os.getpid(), data.decode('utf-8'))) except Exception: conn.close() print('关闭了') break if __name__ == '__main__': st = socket(AF_INET, SOCK_STREAM) host = '127.0.0.1' port = 8080 listen_number = 5 st.bind((host, port)) st.listen(listen_number) transcript = None while True: print('等待连接') conn, _ = st.accept() if conn != transcript: transcript = conn p = Process(target=process_communication, args=(conn,)) p.start() #p.join() print('连接成功') else: print('不知道:%s' % conn) st.close() #客户端
from socket import * st = socket(AF_INET, SOCK_STREAM)host = '127.0.0.1'port = 8080st.connect((host, port))while True: msg = input('请输入:').strip() if not len(msg): continue st.send(msg.encode(encoding = 'utf-8')) data=st.recv(1024) print(data.decode(encoding='utf-8')) st.close()
(现代操作系统)书 egon老师推荐 开启线程方式一:import multiprocessingfrom multiprocesssing import Process def task(name): print('%s is runings'%name) time.sleep(3) print('%s is done'%name)group#保留参数 无用target#任务名 #如果只有一个参数一定记住加 逗号(,)#Process(target=task,kwargs={'name':'子进程'}) if __name__=='__main__': p=Process(target=task,args=('子进程',)) p.start()#windows系统倒模块的方式,把父进程加载进去 #linux 其实不用放入main下面的, #但是为了兼容liunx和windows系统 所以全部加吧 #可以自定义函数名 #主进程会等待子进程结束后才会结束 p.start()#只是在操作系统发送一个开启子进程的信号 #p.start只是发送信号(这步速度非常快) #申请内存空间,开辟个名称空间,在将父进程的数据复制一份到这个内存空间中 #至于开启的时间,开启的方式都是操作系统说的算 class Myprocess(Process): def __init__(self,x): super().__init__() self.name=x def run(self): self.name#进程名称 if __name__=='__main__': p=Myprocess('测试') p.start()#等同于p.run()#自定义类必须实现run()方法
import timex='tiankong'def task(): global x x=0 print('done') print(x) if __name__ == '__main__': p=Process(target=task) p.start() time.sleep(5)#让父进程等待5秒,让子进程运行完闭后,才执行下一行代码 print(x) #但是子进程不一定5秒就能运行完。、 #进程间内存隔离
from multiprocessing import Processimport time,osdef task(name,n): print('name is :%s'%name) time.sleep(3) print('子进程pid%s'%os.getpid()) print(n) print('end') if __name__ == '__main__': p=Process(target=task,args=('子进程',('这里可以给子进程传参'))) p.start() p.pid#父进程查看 子进程的pid方式 p.join()#让父进程在原地等待,等到子进程运行完毕后,才执行下一行代码 #本质和time.sleep()一样但是等待时间不用手动输入了 print('主进程') def walk(): print('walk:%s'%os.getpid()) time.sleep(12) if __name__ == '__main__': p=Process(target=walk) p.start() p.is_alive()#只要信号发出,就认为这个子线程是活着 print('父进程:%s'%os.getpid()) p.join()#自动回收僵尸进程 #让父进程进入等待状态 p.terminate()#给操作系统发送信号,杀死这个子进程 #杀死进程taskkill /F /PID 进程号#liunx 中孤儿进程 父进程会变成 init
python multiprocessing 和tcp的更多相关文章
- python socket之tcp服务器与客户端demo
python socket之tcp服务器与客户端demo 作者:vpoet mails:vpoet_sir@163.com server: # -*- coding: cp936 -*- ''' 建立 ...
- python multiprocessing example
python multiprocessing example Server Code: #!/usr/bin/python #-*- coding: UTF-8 -*- # mpserver.py # ...
- python MultiProcessing模块进程间通信的解惑与回顾
这段时间沉迷MultiProcessing模块不能自拔,没办法,python的基础不太熟,因此就是在不断地遇到问题解决问题.之前学习asyncio模块学的一知半解,后来想起MultiProcessin ...
- python小练习---TCP服务器端
针对于上一篇分享python小练习---TCP客户端 http://www.cnblogs.com/zhaijiahui/p/6926197.html我继续按书中内容,向下进行这里需要强调一个事py3 ...
- 【Python】如何基于Python写一个TCP反向连接后门
首发安全客 如何基于Python写一个TCP反向连接后门 https://www.anquanke.com/post/id/92401 0x0 介绍 在Linux系统做未授权测试,我们须准备一个安全的 ...
- Python中的Tcp协议的应用之Tcp服务端程序开发
TCP通信协议是面向连接的可靠的网络通信协议. 网络间想要进行数据传输必须要用到socket,socket翻译过来叫做套接字,其主要作用是不同设备或同一台设备之间的进程通信工具. Python中的Tc ...
- python中的tcp示例详解
python中的tcp示例详解 目录 TCP简介 TCP介绍 TCP特点 TCP与UDP的不同点 udp通信模型 tcp客户端 tcp服务器 tcp注意点 TCP简介 TCP介绍 TCP协议 ...
- python multiprocessing模块
python multiprocessing模块 原文地址 multiprocessing multiprocessing支持子进程.通信和共享数据.执行不同形式的同步,提供了Process.Queu ...
- python socket 模拟tcp通讯
对于tcp server 端的创建而言, 分为如下步骤: 1,创建socket对象(socket):其中俩个参数分别为 Address Family(如AF_INET为ipv4),AF_I ...
随机推荐
- 如何遍历List对象
for(String str : list) {//其内部实质上还是调用了迭代器遍历方式,这种循环方式还有其他限制,不建议使用. System.out.println(str); } .普通for循环 ...
- anchor_generator.proto:11:3: Expected "required", "optio nal", or "repeated"
转自:https://github.com/tensorflow/models/issues/1834 When I use the commond " protoc object_dete ...
- python基础学习 Day19 面向对象的三大特性之多态、封装 property的用法(1)
一.课前内容回顾 继承作用:提高代码的重用性(要继承父类的子类都实现相同的方法:抽象类.接口) 继承解释:当你开始编写两个类的时候,出现了重复的代码,通过继承来简化代码,把重复的代码放在父类中. 单继 ...
- elasticsearch 问题
elasticsearch 的端口默认绑定到 127.0.0.1 上,对外开放 http 端口就配置 http.host,对外开放 tcp 端口就配置 network.host [1]: max fi ...
- 辅助测试工具xip.io
http://xip.io/ https://github.com/basecamp/xip-pdns
- Eclipse git 冲突合并
Eclipse有一个git的插件叫EGit,用于实现本地代码和远程代码对比.合并以及提交.但是在本地代码和远程代码有冲突的时候,EGit的处理方案还是有点复杂.今天就彻底把这些步骤给理清楚,并公开让一 ...
- Gimbal Lock
[Gimbal Lock] 万向锁源于欧拉角的是有序处理的.U3D中的序列为: y->x->z.当旋转y时,local坐标系与世界坐标系重合,所以y等于永远按惯性坐标旋转.当x旋转+/-9 ...
- 游戏编程模式KeyNote
[游戏编程模式KeyNote] 1.命令模式. 重做在游戏中并不常见,但重放常见.一种简单的重放实现是记录游戏每帧的状态,这样它可以回放,但那会消耗太多的内存.相反,很多游戏记录每个实体每帧运行的命令 ...
- Cacti ERROR: opening '*.rrd': No such file or directory 解决方法
error: opening /home/cacti/rra/url-2 no such file or directory 在看Cacti Graph Debug Mode发现如下报错 RRDToo ...
- laravel 5.1部署到 集成环境 lnmp上
laravel 5.1 需要配置:php版本 >= 5.5.9 如果php版本不够可以升级 1.切换到安装包目录 # cd /lnmp1.3-full 2.升级php命令 # ./upgrade ...