python multiprocessing 和tcp

#用类方法  服务端

from socket import *
from multiprocessing import Process
import 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 Process
from 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 = 8080
st.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 multiprocessing
from 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 time
x='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  Process
import time,os
def 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




转载于:https://www.cnblogs.com/yanxiatingyu/p/9295187.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab 画三维花瓶,精美花瓶建模教程

1、首先,草图单位为mm,进入前视图绘制如图草图,花瓶的基本形状轮廓2、然后对草图进行旋转3、旋转出曲面后,在顶部边线新建一个基准面4、继续在前视图绘制草图,如图绘制一弧线5、然后进行旋转6、可以得到图示的两个曲面…

PKI系统相关知识点介绍

公钥基础设施(Public Key Infrastructure,简称PKI)是目前网络安全建设的基础与核心,是电子商务安全实施的基本保障,因此,对PKI技术的研究和开发成为目前信息安全领域的热点。本文对PKI技术进行了全面的分析…

android 打印java堆栈,Android打印堆栈

java打印堆栈方法一:异常对象打印堆栈Exception e new Exception("this is a log");e.printStackTrace();方法二:Log打印获取异常的堆栈并打印Log.e(“dump_test”,Log.getStackTraceString(new Throwable()));C\C打印堆栈方法一:…

实际算法项目工程上手日志C/C++

#pragma once 为了保证头文件只被编译一次,通常放在头文件的顶部 #define IN #define OUT #define INOUT 这个只在逻辑上起作用, IN 表示输入参数,指针指向的值不会修改; OUT 表示输出参数,指针指向的值会修改&a…

Arduino 控制超声波测距模块

一.实物图 二.例子代码 用到数字2 和3 引脚,还有两个就是vcc GND两个阴脚,用模块连线比较简单 转载于:https://www.cnblogs.com/caoguo/p/4785700.html

Linux安装source-code-pro字体

2019独角兽企业重金招聘Python工程师标准>>> 1.下载source-code-pro字体 从GitHub下载 https://github.com/adobe-fonts/source-code-pro/releases 2.解压文件,将OTF格式的文件夹重新命名一下,这里我命名为source-code-pro,然后将…

dft对称性 matlab实验,数字信号处理实验指导书(审)

(0???2?)上对X(ej?)均匀采样得到?X(k)?X(ej?)??2?k/N??n???x(n)e?j2?kn/N 0?k?N?1可以看到X(k)也是频域上的有限长序列,长度为N。序列X(k)称为序列x(n)的N点DFT。N称为DFT变换区间长度。 通常表示WN?e?j2?/N可将定义式表示为?X(k)??x(n)…

PI

并不是所有东西都可以套PI的,只有满足上述这类的数学关系才可以。 转速经过PI调节得到电流也是有原因的。从下图中可以发现,转速 k*Iq/s,s是拉普拉斯算子,所以也是满足积分,比例关系的。 转载于:https://www.cnblogs.…

AOP之AspectJ简单使用

为什么80%的码农都做不了架构师?>>> 参考文章: 使用AspectJ在Android中实现Aop 深入理解Android之AOP自动打印日志主要知识点: 主要是JPoint、pointcuts、advice以及他们之间的关系可以通过aj文件、或AspectJ注解的Java文件实现A…

matlab drawnow连成曲线,precision recall曲线Matlab实现

在用哈希进行检索时,常会用到precision recall曲线对其性能进行定量评价。precision recall的定义在信息检索评价指标中已做了详细说明,这里再记录一下precision recall的具体实现。precision recall曲线matlab一般使用的都是下面的版本:func…

trap

http://blog.csdn.net/elbort/article/details/8525599 http://mywiki.wooledge.org/SignalTrap转载于:https://www.cnblogs.com/flowjacky/p/4785723.html

WinSCP实现Ubuntu与 Windows 文件共享方法

2019独角兽企业重金招聘Python工程师标准>>> WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端。同时支持SCP协议。它的主要功能就是在本地与远程计算机间安全的复制文件。WinSCP绿色中文版 一款基于SSH安全高效的FTP上传软件。WinSCP 可以执行所有基本的文…

缓存机制

缓存 缓存就是数据交换的缓冲区(称作Cache) 客户端:缓存(expires)、deflate压缩 缓存服务器:CDN/cache缓存静态内容如:html、jpg、gif、js等 静态web服务器:Apache/nginx静态服务器提…

Shell学习总结

Shell 是什么? Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务…

java有几个关键字,Java多线程常用的几个关键字

Java多线程常用的几个关键字二、volatile作用:volatile关键字的作用是:使变量在多个线程间可见(具有可见性),但是仅靠volatile是不能保证线程的安全性,volatile关键字不具备synchronized关键字的原子性。Demo1:package com.ietree…

PHP获取QQ等级,php仿QQ等级太阳显示函数

开头先引述下QQ等级的算法:设当前等级为N,达到当前等级最少需要的活跃天数为D,当前活跃天数为Dc,升级剩余天数为Dr,则:从而推出:好了,引述完成,懒得写字了,贴出代码&…

Bugfree实用心得_转

转自:http://blog.csdn.net/benkaoya/article/details/8719257 本博下有许多实用技巧 1. 什么是问题跟踪系统 问题跟踪系统(Issue Tracking System)是专门用于记录、跟踪和管理各类问题的软件。 问题跟踪系统出现于上世纪80年代,…

【qxbt day1】 P2367 语文成绩

今天学了 差分********* 很明白 然后 配合着luogu上的题写一下吧 裸的差分 当时一直打暴力60分 交了十几次 今天才知道 查询修改什么的是差分 直接看题把 输入输出格式输入格式: 第一行有两个整数n,p,代表学生数与增加分数的次…

python会什么比c慢

众所周知,python执行速度比c慢。原因为何? 先来看下面这张图: python的传统运行执行模式:录入的源代码转换为字节码,之后字节码在python虚拟机中运行。代码自动被编译,之后再解释成机器码在CPU中执行。 补充…

多维动归第一题

https://www.luogu.org/problemnew/show/P1508 好了这题就是较为简单的坐标类DP(感觉),总之是一个二维的区域,需要一步一步地向可前进方向dp,而倒退过来,就是每一个地方取之前的地方里最多的一个进行选择&a…