#用类方法  服务端

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的更多相关文章

  1. python socket之tcp服务器与客户端demo

    python socket之tcp服务器与客户端demo 作者:vpoet mails:vpoet_sir@163.com server: # -*- coding: cp936 -*- ''' 建立 ...

  2. python multiprocessing example

    python multiprocessing example Server Code: #!/usr/bin/python #-*- coding: UTF-8 -*- # mpserver.py # ...

  3. python MultiProcessing模块进程间通信的解惑与回顾

    这段时间沉迷MultiProcessing模块不能自拔,没办法,python的基础不太熟,因此就是在不断地遇到问题解决问题.之前学习asyncio模块学的一知半解,后来想起MultiProcessin ...

  4. python小练习---TCP服务器端

    针对于上一篇分享python小练习---TCP客户端 http://www.cnblogs.com/zhaijiahui/p/6926197.html我继续按书中内容,向下进行这里需要强调一个事py3 ...

  5. 【Python】如何基于Python写一个TCP反向连接后门

    首发安全客 如何基于Python写一个TCP反向连接后门 https://www.anquanke.com/post/id/92401 0x0 介绍 在Linux系统做未授权测试,我们须准备一个安全的 ...

  6. Python中的Tcp协议的应用之Tcp服务端程序开发

    TCP通信协议是面向连接的可靠的网络通信协议. 网络间想要进行数据传输必须要用到socket,socket翻译过来叫做套接字,其主要作用是不同设备或同一台设备之间的进程通信工具. Python中的Tc ...

  7. python中的tcp示例详解

    python中的tcp示例详解  目录 TCP简介 TCP介绍 TCP特点 TCP与UDP的不同点 udp通信模型 tcp客户端 tcp服务器 tcp注意点   TCP简介   TCP介绍 TCP协议 ...

  8. python multiprocessing模块

    python multiprocessing模块 原文地址 multiprocessing multiprocessing支持子进程.通信和共享数据.执行不同形式的同步,提供了Process.Queu ...

  9. python socket 模拟tcp通讯

    对于tcp server 端的创建而言, 分为如下步骤:   1,创建socket对象(socket):其中俩个参数分别为     Address Family(如AF_INET为ipv4),AF_I ...

随机推荐

  1. 1.网站js文件获取

    ++++++++++++++++++++++ pls,input your domain like: http://111.com #coding:utf8 #encoding=utf8 import ...

  2. 获取字段唯一值工具- -ArcPy和Python案例学习笔记

    获取字段唯一值工具- -ArcPy和Python案例学习笔记   目的:获取某一字段的唯一值,可以作为工具使用,也可以作为函数调用 联系方式:谢老师,135-4855-4328,xiexiaokui# ...

  3. winform下利用webBrowser执行javascript

    目前很多网站为了防止恶意提交表单信息,大多都采用了加密的方式对提交信息进行处理,加密处理后通过POST提交给服务器验证,这种操作一般都是用Javascipt进行加密,若是我们想要正确提交表单到网站,就 ...

  4. mysql 去除字符串中前后空格

     update  table  set  field = replace(replace(replace(field,char(9),''),char(10),''),char(13),''); 

  5. pycahrm 激活

    Linux在/etc/hosts中添加 0.0.0.0 account.jetbrains.com就好,直接添加:0.0.0.0 account.jetbrains.comwindows的话没记错应该 ...

  6. python之流程控制

    流程控制之if-else if 条件1: 满足条件1的情况 else if 条件2: 满足条件2的情况 if 条件2.1: 满足条件2.1的情况(if-else语句的嵌套) else if 条件2.2 ...

  7. Java NIO Path

    Java NIO Path Creating a Path Instance Creating an Absolute Path Creating a Relative Path Path.norma ...

  8. Linux系统服务之inetd

    [Linux系统服务之inetd] inetd的角色是作为Telnet和FTP等与网络服务器相关的进程的“超级服务器”.这是一个简单的道理:并不是全部的服务器进程(包括那些接受新的Telnet和FTP ...

  9. ubuntu下搭建node server的几个坑

    [ubuntu下搭建node server的几个坑] 1.环境变量 process.env.PORT需要使用 export PORT=80设置 windows下是set PORT=80 2.命令连结 ...

  10. day30 UDP协议

    本周安排 周二 socket编程 周三 粘包处理 周四 选课系统 并发编程 周五多道技术 多进程 周六 IPC 互斥锁 常用模块 os* 操作系统 多数是文件操作 os.path 处理文件路径 shu ...