随机“pythonw.exe 已停止工作”崩溃

2024-06-03

SO,

有问题的代码如下,但是它也可能随机发生在其他脚本上(我不认为错误在于代码中)

由于某种原因,它有时会完全随机地崩溃并弹出“pythonw.exe 已停止工作”的消息,可能是在 5 小时、24 小时或 5 天后……我不明白为什么会崩溃。

from datetime import date, timedelta
from sched import scheduler
from time import time, sleep, strftime
import random
import traceback

s = scheduler(time, sleep)
random.seed()

def periodically(runtime, intsmall, intlarge, function):

    currenttime = strftime('%H:%M:%S')

    with open('eod.txt') as o:
        eod = o.read().strip()
        if eod == "1":
            EOD_T = True
        else:
            EOD_T = False

    while currenttime >= '23:40:00' and currenttime <= '23:59:59' or currenttime >= '00:00:00' and currenttime <= '11:30:00' or EOD_T:
        if currenttime >= '23:50:00' and currenttime <= '23:59:59':
            EOD_T = False
        currenttime = strftime('%H:%M:%S')
        print currenttime, "Idling..."
        sleep(10)
        open("tca.txt", 'w').close

    open("tca.txt", 'w').close

    runtime += random.randrange(intsmall, intlarge)
    s.enter(runtime, 1, function, ())
    s.run()

def execute_subscripts():

    st = time()
    print "Running..."

    try:
       with open('main.csv'):
           CSVFile = True
    except IOError:
        CSVFile = False

    with open('eod.txt') as eod:
        eod = eod.read().strip()
        if eod == "1":
            EOD_T = True
        else:
            EOD_T = False

    if CSVFile and not EOD_T:
        errors = open('ERROR(S).txt', 'a')

        try:
            execfile("SUBSCRIPTS/test.py", {})
        except Exception:
            errors.write(traceback.format_exc() + '\n')
            errors.write("\n\n")

        errors.close()

    print """ %.3f seconds""" % (time() - st)

while True:
    periodically(15, -10, +50, execute_subscripts)

有谁知道我如何找出崩溃的原因或知道原因并知道解决方法?

Thanks
- 海福莱克斯


我不知道,但它may与执行此操作的两行相关:

open("tca.txt", 'w').close

这些并没有按照您的预期进行:它们使文件保持打开状态。你需要callclose 方法(不仅仅是检索它):

open("tca.txt", 'w').close()
                          ^^

但可能不是这样。当文件对象变成垃圾时,CPython 将自动关闭它(在本例中会立即发生 - 语句一结束,引用计数就会达到 0)。

也许你应该迁移到 Linux 系统;-)

想法:是否可以运行它python.exe相反,从 DOS 框(cmd.exe)你保持开放并忽略?调试有大问题pythonw.exe致命之处在于没有控制台窗口来显示可能弹出的任何错误消息。

这就引出了另一个问题:这条线在做什么?

print "Running..."

如果你正在运行pythonw.exe,你永远不会看到它,对吗?然后can引起问题,取决于exactly您正在运行哪些版本的 Python 和 Windows。Standard input and standard output并不真正存在,在pythonw,我记得追踪到一个神秘的pythonw.exe当“太多”数据被写入时,微软库会崩溃sys.stdout (which print uses).

一种判断方法:如果你在python.exe而不是从 DOS 盒子上运行,并且它运行了一年而没有崩溃,这可能就是原因;-)

Example

这是一个简单的程序:

i = 0
while 1:
    i += 1
    with open("count.txt", "w") as f:
        print >> f, i
    print "hi!"

在32位Windows Vista下使用Python 2.7.6,它有根本不同的行为取决于是否python.exe or pythonw.exe用于运行它。

Under python.exe:

C:\Python27>python yyy.py
hi!
hi!
hi!
hi!
hi!
hi!
hi!
hi!
hi!
hi!
hi!
...

这种情况永远持续下去,其价值在于count.txt不断增加。但:

C:\Python27>pythonw yyy.py

C:\Python27>

也就是说,没有可见的输出。这是预期的:pythonw运行它的程序断开连接从控制台窗口。

经过很短的时间后,pythonw.exe无声无息地死去(使用任务管理器可以看到这一点)- 消失得无影无踪。在那时候:

C:\Python27>type count.txt
1025

因此,当从断开连接的程序向标准输出写入“太多”内容时,MS 的库仍然会崩溃。取出print "hi!",并且它“永远”运行。

Python 3

这是通过可疑的绑定权宜之计在 Python 3 中“修复”的sys.stdout to None在其下pythonw.exe。你可以阅读这里混乱的历史 http://bugs.python.org/issue706263.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

随机“pythonw.exe 已停止工作”崩溃 的相关文章

随机推荐

  • 非单射封闭型族

    我确实有一段人为设计的代码 LANGUAGE DataKinds TypeFamilies data Foo Foo type family Id n Foo a where Id Foo a a data Bar n Foo Bar cl
  • 具有多个输入的单元测试

    我一直在尝试进行单元测试 并且正在尝试处理一个函数的单元测试 该函数的返回值取决于一堆参数 不过信息量有点大 有点让人不知所措 考虑以下 我有课Article 其中有价格集合 它有一个方法GetCurrentPrice它根据一些规则确定当前
  • PHP中的“@/path/to/a/file”是什么意思?

    我偶然发现以下代码示例 image file path code tmhOAuth gt request POST https upload twitter com 1 statuses update with media json arr
  • Ajax.BeginForm 帮助程序未将部分视图加载到指定的 DIV 中

    我正在使用 MVC 尝试将表单提交的结果加载到特定的 DIV 中 下面是我的表单的代码 div class segmentForm clearfix div
  • Flask 登录 @login_required 不起作用

    我使用 Flask login 来确保用户在访问某些页面之前已登录 我在用着 login required在我想要保护的视图上 但即使我正在设置login user user 在我想要设置用户的地方 它不允许我进入受保护的路线 索引 我正在
  • 在php word中将两个徽标对齐在同一行

    我使用 php word 添加了两个徽标 但两个徽标不在同一行 我希望两个徽标位于同一行 如下所示 我的错误在哪里 if file exists logo table gt addRow table gt addCell 20000 arr
  • 防止基于时间的复制保护规避? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一些试用软件希望分发给客户 我希望试用版软件在安装 30 天后停止工作 在软件中简单检查系统日期是实现此目的的最直接方法 但是客户
  • 将参数从 AWS lambda 传递到 AWS CodePipeline

    我有一个 lambda 通过 AWS SDK 启动 CodePipeline 执行startPipelineExecution功能 是否有任何机制可将参数传递给 CodePipeline 构建 以便它可以使用 CodeBuild 构建中的值
  • 如何修改实时 Alexa 技能?

    我需要修改我已发布的 Alexa 技能 我熟悉亚马逊在发布技能后自动创建的 开发中 技能版本 我不明白的是如何迭代我的技能 特别是当我需要同时更改交互模型和链接的 Lambda 函数时 例如 我可以创建一个单独的 开发中 Lambda 函数
  • 数组中的不同类型,从数组中取出它们时如何知道将它们转换为什么?

    假设有一个通用的List类型的Packet 持有自定义类扩展Packet 例如登录包 or 聊天包 假设我把这些放在一个列表中 当我把它们拿出来时 最 具体 的类型是Packet 我想将它们转换成更具体的类型 回到原来的类型登录包 or 聊
  • 如何使用jquery格式化数字

    我正在尝试删除 之后的数字 然后我想格式化数字 16810900 211233 喜欢这个 16 810 900 但我不知道该怎么做 这是我的 html 是这样的 div class main p class active 10200 00
  • Spring Batch 多线程

    我正在编写一个 Spring Batch 并希望在需要时对其进行扩展 我的 ApplicationContext 看起来像这样 Configuration EnableBatchProcessing EnableTransactionMan
  • 如何将 Swift 字符串传递给 C 函数?

    我在将字符串从 swift 传递到用 c 编写的函数时遇到严重问题 我正在尝试在我的快速代码中执行此操作 var address 192 168 1 2 var port 8888 initSocket address port c 函数如
  • redux 教程:const 存储在 this.props 中

    我正在做教程 React 视频 24 https egghead io lessons javascript redux passing the store down explicitly via props https egghead i
  • 在 3d 空间中的两个平面之间进行插值

    我正在开发一种工具 可以让您在 3D 体积 上圈出 包围事物 我想通过标记 切片 1 和 3 并从该信息 填充 切片 2 来节省时间 两个简单的解决方案是 1 slice2 slice1 AND slice3 gets the overla
  • .NET - 用户控件拖放 - 子控件

    我有 FlowLayoutPanel 和用户控件 可以拖放重新排序 这种作品 但问题是子控件阻止拖动实际的父 UserControl 所以我的问题是如何启用包含子控件的 UserControl 的拖动 如果我理解正确的话 我遇到了与您相同的
  • 通过 JDBC 调用 Sybase 存储过程时结果集为空

    我正在调用一个通过 JDBC 返回多个结果集的 Sybase 存储过程 我需要获取一个特定的结果集 其中有一列名为 结果 这是我的代码 CallableStatement cs conn prepareCall sqlCall cs reg
  • Flutter如何post json数组

    如何在 json 数组下面发布 LstUserOptions OptionID ca339e40 10cc 4459 b9ec 07f7df0f4c69 我找到了解决方案 List
  • 如何让 HttpClient 将凭据与请求一起传递?

    我有一个与 Windows 服务通信的 Web 应用程序 托管在 IIS 中 Windows 服务使用 ASP Net MVC Web API 自托管 因此可以使用 JSON 通过 http 进行通信 Web 应用程序被配置为进行模拟 其想
  • 随机“pythonw.exe 已停止工作”崩溃

    SO 有问题的代码如下 但是它也可能随机发生在其他脚本上 我不认为错误在于代码中 由于某种原因 它有时会完全随机地崩溃并弹出 pythonw exe 已停止工作 的消息 可能是在 5 小时 24 小时或 5 天后 我不明白为什么会崩溃 fr