Python常驻任务实现接收外界参数代码解析


Posted in Python onJuly 21, 2020

实现一个简单的常驻任务是容易的,写一个while True就可以了,但是同时要能接收外界传来的参数,就稍微有点复杂.

我第一个想到的是网络编程中的server/client模式

server作为常驻进程,可以接受client传来的各种参数进行处理

服务端:server.py

import sockets = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('127.0.0.1', 10001))
s.listen(5)
def do_some():
  pass
def do_other():
  pass
def tcplink(sock, addr):
  print('Accept new connection from %s:%s...' % addr)
  sock.send(b'Welcome!')
  while True:
    data = sock.recv(1024)
    time.sleep(1)
    if not data or data.decode('utf-8') == 'exit':
      break
    data_str = data.decode('utf-8')
    data_list = data_str.split(',')
    if len(data_list) == 3:
      do_some()
    else:
      do_other()
    sock.send(('processing, %s!' % s3).encode('utf-8'))

  sock.close()
if __name__ == '__main__':
  while True:
    # 接受一个新连接:
    data, addr = s.accept()
    # 创建新线程来处理TCP连接:
    t = threading.Thread(target=tcplink, args=(data, addr))
    t.start()

服务端实现完了,下面我们来实现客户端client.py,客户端支持传入参数或从文件读取参数,来向客户端发送请求

import socket
import sys

if __name__ == '__main__':
  param = sys.argv[1]
  c_list = []
  if param.endswith('txt'):
    with open(param, 'r') as file:
      for line in file.readlines():
        c_list.append(line.strip().encode('utf8'))
  else:
    c = param.encode('utf8')
    c_list.append(c)
  s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  s.connect(('127.0.0.1', 10001))
  print(s.recv(1024).decode('utf-8'))
  for data in c_list:
    s.send(data)
    print(s.recv(1024).decode('utf-8'))
  s.send(b'exit')
  s.close()

这样通过两个脚本,一个实现了常驻进程,一个实现了传入参数,就可以不断接受外界请求

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python lambda和Python def区别分析
Nov 30 Python
用Python中的__slots__缓存资源以节省内存开销的方法
Apr 02 Python
Python中的fileinput模块的简单实用示例
Jul 09 Python
Python备份目录及目录下的全部内容的实现方法
Jun 12 Python
PyTorch线性回归和逻辑回归实战示例
May 22 Python
对Python定时任务的启动和停止方法详解
Feb 19 Python
Dlib+OpenCV深度学习人脸识别的方法示例
May 14 Python
python超时重新请求解决方案
Oct 21 Python
Pytorch 多维数组运算过程的索引处理方式
Dec 27 Python
pycharm配置QtDesigner的超详细方法
Jan 25 Python
Django显示可视化图表的实践
May 10 Python
进行数据处理的6个 Python 代码块分享
Apr 06 Python
python中np是做什么的
Jul 21 #Python
从python读取sql的实例方法
Jul 21 #Python
python3.7调试的实例方法
Jul 21 #Python
python如何快速生成时间戳
Jul 21 #Python
OpenCV Python实现图像指定区域裁剪
Mar 12 #Python
openCV提取图像中的矩形区域
Jul 21 #Python
Python文件夹批处理操作代码实例
Jul 21 #Python
You might like
让你同时上传 1000 个文件 (二)
2006/10/09 PHP
Windows2003 下 MySQL 数据库每天自动备份
2006/12/21 PHP
谈谈PHP的输入输出流
2007/02/14 PHP
PHP去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
php header功能的使用
2013/10/28 PHP
php中使用array_filter()函数过滤空数组的实现代码
2014/08/19 PHP
Yii框架学习笔记之应用组件操作示例
2019/11/13 PHP
jQuery实现鼠标滚轮动态改变样式或效果
2015/01/05 Javascript
JavaScript实现的一个倒计时的类
2015/03/12 Javascript
Nodejs中session的简单使用及通过session实现身份验证的方法
2016/02/04 NodeJs
原生js实现电商侧边导航效果
2017/01/19 Javascript
五步轻松实现zTree的使用
2017/11/01 Javascript
react-navigation之动态修改title的内容
2018/09/26 Javascript
layer插件实现在弹出层中弹出一警告提示并关闭弹出层的方法
2019/09/24 Javascript
js new Date()实例测试
2019/10/31 Javascript
Vue实现跑马灯效果
2020/05/25 Javascript
解决Echarts2竖直datazoom滑动后显示数据不全的问题
2020/07/20 Javascript
vue修改Element的el-table样式的4种方法
2020/09/17 Javascript
Python 实现购物商城,含有用户入口和商家入口的示例
2017/09/15 Python
Python中摘要算法MD5,SHA1简介及应用实例代码
2018/01/09 Python
pycharm 安装JPype的教程
2019/08/08 Python
python自动循环定时开关机(非重启)测试
2019/08/26 Python
Python使用python-docx读写word文档
2019/08/26 Python
python中property属性的介绍及其应用详解
2019/08/29 Python
pytorch实现用CNN和LSTM对文本进行分类方式
2020/01/08 Python
Python的PIL库中getpixel方法的使用
2020/04/09 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
html2canvas生成清晰的图片实现打印的示例代码
2019/09/30 HTML / CSS
圣诞树世界:Christmas Tree World
2019/12/10 全球购物
工程总经理工作职责
2013/12/09 职场文书
汽车制造与装配专业自荐信范文
2014/01/02 职场文书
大学校庆策划书
2014/01/31 职场文书
临床医师个人自我评价
2014/04/06 职场文书
政府信息公开实施方案
2014/05/09 职场文书
关于对大人不礼貌的检讨书
2014/09/29 职场文书
公文写作:工伤事故分析报告怎么写?
2019/11/05 职场文书