python 排程问题仿真_python中的调度问题

在Python中,一个无限循环的线程读取USB设备导致主循环无法正常调度。通过在循环内加入`time.sleep()`可以解决,但可能导致包处理延迟。供应商建议线程调度取决于Python解释器,寻求确认是否为Python本身的问题,并寻找释放线程控制的方法。
摘要由CSDN通过智能技术生成

我使用python将一个硬件usb嗅探器设备与供应商提供的pythonapi接口,并尝试在一个无限循环的单独线程中从该设备读取(usb包)(这很好)。问题是我的主循环似乎再也不会被调度(我的read循环得到了所有的关注)。在

代码看起来很像:from threading import Thread

import time

usb_device = 0

def usb_dump(usb_device):

while True:

#time.sleep(0.001)

packet = ReadUSBDevice(usb_device)

print "packet pid: %s" % packet.pid

class DumpThread(Thread):

def run(self):

usb_dump()

usb_device = OpenUSBDevice()

t = DumpThread()

t.start()

print "Sleep 1"

time.sleep(1)

print "End"

CloseUSBDevice(usb_device)

sys.exit(0)

(我可以粘贴实际的代码,但由于您需要硬件设备,所以我认为这不会有太大帮助)。在

我希望在主线程终止整个程序之前,这段代码将开始转储usb包大约一秒钟。然而,我看到的只是“sleep1”,然后usb_dump()过程将永远运行。如果我取消注释“时间。睡觉usb_dump()过程内部循环中的(0.001)“语句开始以我预期的方式工作,但是python代码就无法跟上所有传入的包:-(

供应商告诉我这是python调度程序的问题,而不是他们的api的错,因此对我没有帮助:«However, it seems like you are experiencing some nuances when using threading in Python. By putting the time.sleep in the DumpThread thread, you are explicitly signaling to the Python threading system to give up control. Otherwise, it is up the Python interpreter to determine when to switch threads and it usually does that after a certain number of byte code instructions have been executed.»

有人能确认python是这里的问题吗?有没有其他方法使DumpThread释放控制?还有别的主意吗?在

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python仿真程序是一种利用Python编写的程序,用于模拟特定环境或过程。它可以管理模拟时间和事件的调度和处理,提供了多种方法和函数来控制和模拟仿真的行为。一个常见的例子是模拟汽车的启停过程,可以使用simpy库来实现。在这个例子,通过添加汽车进程,并使用timeout函数来实现延时,模拟汽车的停车和行驶过程。另外,还可以利用Python实现一个PoW(Proof of Work)的仿真程序,通过设置节点数量、每个轮次出块的成功率等参数,模拟生成区块链的状态,并测量区块链的增长速度。同时,可以设置一定数量的恶意节点来实施攻击,并测量不同恶意节点比例条件下的攻击成功长度和自私挖矿收益比例。这些仿真程序可以通过Python代码来实现,具体的代码解析可以参考simulate_pow.py文件。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python-simpy的仿真模拟](https://blog.csdn.net/lay523/article/details/123428707)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [基于Python实现一个PoW的仿真程序](https://blog.csdn.net/newlw/article/details/125868975)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值