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

 更新时间:2020年07月21日 14:36:57   作者:Mars.wang  
这篇文章主要介绍了Python常驻任务实现接收外界参数代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

实现一个简单的常驻任务是容易的,写一个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爬取读者并制作成PDF

    Python爬取读者并制作成PDF

    本文是在学习了beautifulsoup之后,制作的一个爬取读者杂志并使用reportlab制作成pdf的python小工具,咱也文艺一下:),分享给大家,有需要的小伙伴参考下吧。
    2015-03-03
  • PyQt5重写QComboBox的鼠标点击事件方法

    PyQt5重写QComboBox的鼠标点击事件方法

    今天小编就为大家分享一篇PyQt5重写QComboBox的鼠标点击事件方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • 人工智能—Python实现线性回归

    人工智能—Python实现线性回归

    这篇文章主要介绍了人工智能—Python实现线性回归,人工智能分为类型、数据集、效果评估、等,线性回归根据随机初始化的 w x b 和 y 来计算 loss等步骤实现,下面来看看文章的具体实现吧
    2022-01-01
  • Keras中Conv1D的使用及说明

    Keras中Conv1D的使用及说明

    这篇文章主要介绍了Keras中Conv1D的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • python中什么是面向对象

    python中什么是面向对象

    在本篇文章里小编给大家分享了关于python面向对象的相关基础知识点,有兴趣的朋友们跟着学习下。
    2020-06-06
  • 详解python中常用配置的读取方法

    详解python中常用配置的读取方法

    常见的应用配置方式有环境变量和配置文件,对于微服务应用,还会从配置中心加载配置,本文主要介绍了从环境变量、.env文件、.ini文件、.yaml文件等文件的读取配置,需要的可以参考下
    2024-01-01
  • Python实现统计给定字符串中重复模式最高子串功能示例

    Python实现统计给定字符串中重复模式最高子串功能示例

    这篇文章主要介绍了Python实现统计给定字符串中重复模式最高子串功能,涉及Python针对字符串的遍历、排序、切片、运算等相关操作技巧,需要的朋友可以参考下
    2018-05-05
  • Pytorch对Himmelblau函数的优化详解

    Pytorch对Himmelblau函数的优化详解

    今天小编就为大家分享一篇Pytorch对Himmelblau函数的优化详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • pandas筛选数值列和非数值列方式

    pandas筛选数值列和非数值列方式

    这篇文章主要介绍了pandas筛选数值列和非数值列方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • 在 Jupyter 中重新导入特定的 Python 文件(场景分析)

    在 Jupyter 中重新导入特定的 Python 文件(场景分析)

    Jupyter 是数据分析领域非常有名的开发环境,使用 Jupyter 写数据分析相关的代码会大大节约开发时间。这篇文章主要介绍了在 Jupyter 中如何重新导入特定的 Python 文件,需要的朋友可以参考下
    2019-10-10

最新评论