我使用 ffmpeg 转换通过 ASPX 网页上传的视频文件。
ffmpeg转换效果很好。
我想为最终用户提供一个进度条。所以我在网页上放置了一个 updatePanel 并尝试读取文件大小......
执行此操作的正确/有效方法是什么?
你能向我解释一下,当将工作函数作为单独的进程执行时,如何防止 python GUI 冻结?
我编写了一个 python GUI,单击按钮即可通过多处理模块启动一个进程。我决定使用多处理而不是线程,因为我喜欢选择启动、暂停、恢复和终止进程。
不幸的是,当工作进程运行时,GUI 冻结并变得无响应,因此我无法按“暂停”按钮。
stackoverflow 上多次报告了 GUI 的冻结问题,但似乎没有该问题的单一来源,也没有统一的解决方案。因此我的问题不是重复的。
我目前完全不知道如何解决这个冻结问题。到目前为止,我对解决方案的唯一猜测是使用名为 mtTkinter 的 Tkinter 线程安全包装器,希望它也有助于多处理。但它什么也没做。
也许需要在 GUI 和工作进程之间添加另一层。
欢迎任何建议、提示和解决方案。
最小代码:
import Tkinter as tk
import time
import multiprocessing
import psutil
def test_function():
print 'Test process starting.'
for i in range(11):
print "Test process running, step: ", i
time.sleep(1)
print 'Test process finished.'
class MainScreen(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.title("CardZilla 0.1")
self.resizable(0, 0)
self.s_button = tk.Button(self, text="START", command=self.on_start)
self.p_button = tk.Button(self, text="PAUSE", state='disabled', command=self.on_pause)
self.s_button.pack(side=tk.LEFT)
self.p_button.pack(side=tk.LEFT)
def update_all(self): #updates …Run Code Online (Sandbox Code Playgroud) 在我的程序中,在这种情况下写入 stderr 时有时会冻结:
/proc/self/exe)fprintf写入来stderr工作,在某些时候我的程序会完全锁定。调试器告诉我它的 fprintf。这里发生了什么?我已经尝试过的是,一旦没有人再监听管道,就可以防止程序崩溃SIG_IGN。但现在我陷入了困境(无论有没有SIGPIPE冻结,冻结的行为都是一样的)。SIG_IGN
任何帮助表示赞赏。
对于具有大量输出或错误的进程,尝试使用简单的方法重定向标准输出和错误
string output = process.StandardOutput.ReadToEnd();
string err = process.StandardError.ReadToEnd();
process.WaitForExit();
Run Code Online (Sandbox Code Playgroud)
将导致程序挂起,并且永远不会真正完成。
当我尝试在浏览器中首次加载或打开导入的大型 Jupyter / iPython 笔记本(超过 10 MB)时,浏览器卡住/停顿/冻结或需要很长时间并出现无响应页面警报。我在使用不同的浏览器(Chrome / FireFox / Safari)时遇到了问题。
希望这将是一个简单的修复!
我正在使用 .m 文件中的以下代码将 UITextField 添加到我的应用程序:
editTextField = [[UITextField alloc] init];
editTextField.frame = CGRectMake(0, [self getTopOfTabBar] - 30, practiceScreenWidth, 30);
editTextField.delegate = self;
editTextField.backgroundColor = [UIColor blueColor];
[self.view addSubview:editTextField];
Run Code Online (Sandbox Code Playgroud)
但是,每当我单击此 UITextField 时,应用程序就会冻结。日志中不会产生错误或错误,应用程序只是停止响应。
对于一些额外的信息,这里是 .h 文件中的接口
@interface PracticeViewController : UIViewController <UITextFieldDelegate>
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏!
我制作了一个应用程序,可以从网站收集图像的 URL,并将它们一一显示出来。然而,当您使用 QComboBox 滚动浏览图像时,程序会冻结 2-3 秒,这很烦人,因为有超过 100 个 URL 需要滚动。如果您尝试快速滚动,应用程序就会崩溃。图片甚至没有那么大(不到300KB),网络连接足够好。有什么解决方案可以解决这个问题吗?
这是代码片段:
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import urllib.request
import sys
class MainWindow(QMainWindow):
def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
self.setWindowTitle(" ")
lo2 = QVBoxLayout()
self.pixmap = QPixmap()
self.widgetIMG = QLabel()
self.widgetIMG.setAlignment(Qt.AlignHCenter)
self.widgetList = QComboBox()
self.widgetList.addItems(['first image','second image', 'third image'])
self.widgetList.currentIndexChanged.connect(self.Display)
self.url_list = ['http://cards.hearthcards.net/3062325e.png', 'http://cards.hearthcards.net/4fc517c5.png', 'http://cards.hearthcards.net/6c9f07e2.png']
lo2.addWidget(self.widgetIMG)
lo2.addWidget(self.widgetList)
widget = QWidget()
widget.setLayout(lo2)
self.setCentralWidget(widget)
def Display(self, id):
print(id)
URL = self.url_list[id]
img = urllib.request.urlopen(URL).read()
self.pixmap.loadFromData(img) …Run Code Online (Sandbox Code Playgroud) 我最近不得不将我的 vue.js 应用程序(后端的 node.js)的 node.js 版本从 v13.5.0 升级到 v14.5.0。我重新安装了所有节点包,升级了我必须升级的那些,现在应用程序挂在所有数据库调用上。我们使用 pg (node-postgres) 来调用我们的数据库。我将 pg 升级到 7.18.2 版。
我们的初始化代码如下所示:
constructor() {
this.pg = require('pg');
this.client = null;
this.initPromise = null;
}
async init() {
if (!this.initPromise) {
this.client = new this.pg.Client({
application_name: 'Back end',
ssl: {
rejectUnauthorized: false
}
});
this.initPromise = this.client.connect();
}
return this.initPromise;
}
async query(query, params) {
await this.init();
return await this.client.query(query, params);
}
Run Code Online (Sandbox Code Playgroud)
我将控制台日志放在对 this.init() 的调用中,如下所示:
console.log('before');
await this.init();
console.log('after');
Run Code Online (Sandbox Code Playgroud)
'after' 永远不会打印出来。
有谁知道为什么我升级了节点版本后它会挂起?
我有一个简单的程序,根据每行的单词长度对文本文件进行排序这个程序在我的基于xp的旧机器上运行没问题现在我在我的新win7/intel核心i5机器上运行这个程序,它冻结整个系统并恢复正常在完成它的工作之后.
我侵犯了代码,发现导致冻结的行
这是特定的路线......
caption := IntToStr(i) + '..' + IntTostr(ii);
Run Code Online (Sandbox Code Playgroud)
我把它改成了
caption := IntTostr(ii); //slow rate change
Run Code Online (Sandbox Code Playgroud)
而且没有冻结
然后我改变它
caption := IntTostr(i); //fast rate change
Run Code Online (Sandbox Code Playgroud)
然后又冻结了
我的程序代码是
var tword : widestring;
i,ii,li : integer;
begin
tntlistbox1.items.LoadFromFile('d:\new folder\ch.txt');
tntlistbox2.items.LoadFromFile('d:\new folder\uy.txt');
For ii := 15 Downto 1 Do //slow change
Begin
For I := 0 To TntListBox1.items.Count - 1 Do //very fast change
Begin
caption := IntToStr(i) + '..' + IntTostr(ii); //problemetic line
tword := TntListBox1.items[i];
LI := Length(tword);
If lI = …Run Code Online (Sandbox Code Playgroud) 我们有一个由主机(exe)和许多包含gui等的模块(dll)组成的应用程序.有时,应用程序会在关闭时冻结.大多数情况下,它通过TestComplete进行测试.我们无法在调试期间重现该行为.
我们怎样才能找出应用冻结的原因?
我猜它与线程有关,但我不确定.
我们应该尝试任何工具或技术吗?