小编bsi*_*sco的帖子

I/O密集型串口应用:从线程,基于队列的设计移植到异步(ala Twisted)

因此,我一直致力于通过串行(RS-232)"Master"与无线设备通信的客户端应用程序.我目前使用线程编写应用程序的核心(下面).我一直注意到#python的共识似乎是使用线程并使用Twisted的异步通信功能.

我无法找到使用twisted进行串口异步I/O通信的任何好例子.但是,我发现Dave Peticolas的''Twisted Introduction'(感谢nosklo)我目前正在使用它,但它使用套接字而不是串行通信(但异步概念肯定是非常好的解释).

我将如何使用线程,队列将此应用程序移植到Twisted?有没有任何优点/缺点(我注意到,有时,如果一个线程挂起它会BSOD系统)?

代码(msg_poller.py)

from livedatafeed import LiveDataFeed
from msg_build import build_message_to_send
from utils import get_item_from_queue
from protocol_wrapper import ProtocolWrapper, ProtocolStatus
from crc16 import *
import time
import Queue
import threading
import serial
import gc

gc.enable()
PROTOCOL_HEADER = '\x01'
PROTOCOL_FOOTER = '\x0D\x0A'
PROTOCOL_DLE = '\x90'

INITIAL_MODBUS = 0xFFFF


class Poller:
    """
    Connects to the serial port and polls nodes for data.
    Reads response from node(s) and loads that data into queue.
    Parses qdata and …
Run Code Online (Sandbox Code Playgroud)

python multithreading serial-port twisted

4
推荐指数
1
解决办法
6285
查看次数

标签 统计

multithreading ×1

python ×1

serial-port ×1

twisted ×1