Python脚本性能作为后台进程

时间:2009-08-30 00:58:12

标签: python performance process background

我正在编写一个python脚本,充当应用程序和某些外部设备之间的“粘合剂”。脚本本身很简单,有三个不同的过程:

  1. 请求数据(来自套接字连接,通过UDP)
  2. 接收响应(来自套接字连接,通过UDP)
  3. 处理响应并将数据提供给第三方应用程序
  4. 然而,这将重复进行,并且对于几个(+/- 200个不同的)设备。因此,一旦它到达设备#200,它将再次开始从设备#001请求数据。我主要担心的是在执行脚本时不要让处理器陷入困境。

    更新: 我使用三个线程来执行上述操作,每个上述进程使用一个线程。请求/响应是异步的,因为每个响应都包含我需要处理它的所有内容(包括发件人详细信息)。

    有没有办法允许脚本在后台运行并在执行此操作时尽可能少地消耗系统资源?这将在Windows 2003机器上运行。

    任何建议都将受到赞赏。

2 个答案:

答案 0 :(得分:5)

如果您正在对设备使用阻塞I / O,则脚本在等待数据时不会使用任何处理器。您使用多少处理器取决于您对数据执行何种计算。

答案 1 :(得分:4)

Twisted - Python的最佳异步框架 - 允许您以最少的系统资源占用来执行这些任务,尤其是如果您想要“同时”处理多个设备而不是唯一的而不仅仅是几百个中的循环(后者可能导致周期时间太长,特别是如果存在某些设备会有非常延迟的答案或甚至偶尔无法回答并导致“超时”的风险;根据经验,我建议在任何给定时间至少有半数设备“在游戏中”,以避免这种过度延迟的风险。)