我正在编写一个小托盘应用程序,需要检测用户上次与其计算机进行交互以确定它们是否处于空闲状态.
有没有办法检索用户上次移动鼠标,按键或以任何方式与他们的机器进行交互的时间?
我认为Windows显然跟踪这个以确定何时显示屏幕保护程序或断电等,所以我假设有一个Windows API用于自己检索这个?
我通过bundle exec pumactl -F config/puma.rb phased-restart
什么工作正常重启8个美洲狮工人.现在我收到越来越多的postgres错误:
PG::TRDeadlockDetected: ERROR: deadlock detected
Run Code Online (Sandbox Code Playgroud)
我发现大约有50个闲置的postgres进程在运行:
postgres: myapp myapp_production 127.0.0.1(59950) idle
postgres: myapp myapp_production 127.0.0.1(60141) idle
...
Run Code Online (Sandbox Code Playgroud)
当我跑步时,它们消失了bundle exec pumactl -F config/puma.rb stop
.启动应用程序后bundle exec pumactl -F config/puma.rb start
,我得到了16个空闲进程.(在我看来,太多了.)
如何更好地管理这些流程?谢谢你的帮助!
更新
我的puma.rb:
environment 'production'
daemonize true
pidfile 'tmp/pids/puma.pid'
state_path 'tmp/pids/puma.state'
threads 0, 1
bind 'tcp://0.0.0.0:3010'
workers 8
quiet
Run Code Online (Sandbox Code Playgroud) 我试图用Espresso来测试我的用户界面.当我登录我的应用程序时,我会调用Parse API(网络呼叫)来验证用户名和密码.如果一切顺利,用户将被定向到新活动.我想测试一下,但我似乎无法使用空闲资源的东西.
码:
public class ApplicationTest extends ActivityInstrumentationTestCase2<LoginActivity> {
private CountingIdlingResource fooServerIdlingResource;
public ApplicationTest() {
super(LoginActivity.class);
}
@Before
public void setUp() throws Exception {
super.setUp();
injectInstrumentation(InstrumentationRegistry.getInstrumentation());
getActivity();
CountingIdlingResource countingResource = new CountingIdlingResource("FooServerCalls");
this.fooServerIdlingResource = countingResource;
Espresso.registerIdlingResources(countingResource);
}
public void testChangeText_sameActivity() {
// Type text and then press the button.
onView(withId(R.id.username))
.perform(typeText("s@s.nl"), closeSoftKeyboard());
onView(withId(R.id.password))
.perform(typeText("s"), closeSoftKeyboard());
if(performClick())
onView(withId(R.id.main_relative_layout))
.check(matches(isDisplayed()));
// Check that the text was changed.
}
public boolean performClick(){
fooServerIdlingResource.increment();
try {
onView(withId(R.id.login)).perform(click());
return true;
} finally {
fooServerIdlingResource.decrement();
} …
Run Code Online (Sandbox Code Playgroud) 所以我有一个Oracle实例,我知道它正在这个系统上运行,我已经拜访了oracle用户,我正在尝试使用"/ as sysdba"进行连接.但是,当我连接时,它说实例是空闲的.我知道数据库已启动并打开,因为我的应用程序正在与它通信.我的路径(ORACLE_HOME等)可能不正确:任何不正确的设置可能会导致这种情况?
% sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.3.0 - Production on Mon Dec 8 09:23:22 2008
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to an idle instance.
09:23:22 SQL> Disconnected
% ps -ef | grep smon
oracle 6961 1 0 Nov 05 ? 1:24 ora_smon_ORA003
%
Run Code Online (Sandbox Code Playgroud) 为什么在Getmessage()创建消息队列之前需要peekMessage语句?
我对该Application.Idle
事件的了解是,应用程序正在完成其处理并即将进入空闲状态.
我读到了某个地方
如果您在线程空闲之前必须执行任务,请将它们附加到此事件
那么这是否意味着任务将在线程空闲之前或线程变为空闲之后执行?
我的项目中有一些代码,如下所示.数据库更新是否在空闲时间执行?
private void Application_Idle(object sender, EventArgs e)
{
// Update the explorer's menuitems
team.UpdateMenu();
// Update display toolbars.
team.UpdateToolBar();
// Update SaveAll
SaveAll.Enabled = teaj.IsModified;
Up.Enabled = team.CanNavigateUp;
...
Run Code Online (Sandbox Code Playgroud) 我有一个python脚本,它使用多处理和子进程与不同的参数并行启动多个外部命令.代码可以在这里找到.
为方便起见,我在GNU Screen会话中启动此脚本.运行此脚本的计算机有12个处理器,这些处理器在进程变为活动状态之前处于空闲
每个过程需要几个小时到几天才能运行,因此我经常断开与机器的连接并分离屏幕会话.
然而,最近我注意到了一种我以前从未体验过的行为.有几次我回到机器上,发现零负载是空闲的.如果我通过ps ux
或获得活动进程列表,或者top
我仍然可以在进程列表中找到脚本(和子进程).然后我重新连接屏幕会话以检查程序的状态,并立即将新的一批进程发送到队列,并且系统的负载在几秒钟内返回到12.请注意,除了重新连接屏幕会话之外,我对脚本完全没有任何作用.
我在系统上安装了一个监控工具,结果是一些流程在一段时间后完成并且没有启动新流程.因此系统处于活动状态,直到子进程忙,并且一旦没有更多的作业从队列中释放就变为空闲.
所以我的问题是,有没有人知道解释这种行为的任何原因?
编辑:大约一年后,这个问题不再可重现,无论是屏幕上的一些补丁还是python本身.我接受了答案,因为它为测试提供了良好的指导.
python subprocess gnu-screen multiprocessing idle-processing
这是一个相当棘手的问题,因为我没有在网上找到任何信息.基本上,我想知道如何检查计算机是否在Java中空闲.我希望程序只有在计算机处于活动状态时才能工作,但是如果它处于空闲状态则不行.
我能想到这样做的唯一方法是挂钩鼠标/键盘并有一个计时器.
MSN Messenger具有"远离"功能,我希望有类似的东西.
我已经为微控制器编写了许多C程序,但从来没有一个在像linux这样的操作系统上运行的程序.linux如何确定为我的应用程序提供多少处理时间?当我有空闲时间告诉操作系统去做其他事情并稍后再回到我身边以便其他进程也有时间运行时,我需要做些什么吗?或者OS是否只是自动执行此操作?
编辑:添加更多细节我的c程序有一个任务调度程序.有些任务每100毫秒运行一些,有些任务每50毫秒运行一次,依此类推.在我的主程序循环中,我调用ProcessTasks来检查是否有任何任务准备好运行,如果没有准备就绪它会调用空闲函数.空闲功能除了它之外什么都不做,所以我可以用Ocope窥镜切换GPIO引脚并监视空闲时间...或者如果我愿意的话.所以也许我应该在这个空闲函数中调用sched_yield()???
我正在为Windows 10通用应用程序开发一个类库(仅限移动和桌面设备系列).如果用户空闲(没有触摸,鼠标移动,按键等)x秒,我需要调用一个事件.这个方法可以用来解决android上的这个问题.但我无法在Windows UWP上找到解决方案.
UWP中是否有API可用于实现此目的?
idle-processing windows-store-apps win-universal-app windows-10
idle-processing ×10
c# ×2
winapi ×2
android ×1
c ×1
delphi ×1
getmessage ×1
gnu-screen ×1
instance ×1
java ×1
keyboard ×1
linux ×1
networking ×1
oracle ×1
peekmessage ×1
postgresql ×1
puma ×1
python ×1
ruby ×1
subprocess ×1
system-tray ×1
windows ×1
windows-10 ×1
winforms ×1