Python论坛  - 讨论区

标题:[python-chinese] 如何获取无阻塞的键盘输入?

2005年07月25日 星期一 23:44

梅劲松  stephen.cn at gmail.com
Mon Jul 25 23:44:39 HKT 2005

如何获取无阻塞的键盘输入?好象在unix下可以用select,但是在windwos下应该怎么做呢?

-- 
梅劲松

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月26日 星期二 08:13

limodou limodou at gmail.com
Tue Jul 26 08:13:30 HKT 2005

windows下也可以。还可以采用线程吧。

在 05-7-25,梅劲松<stephen.cn at gmail.com> 写道:
> 如何获取无阻塞的键盘输入?好象在unix下可以用select,但是在windwos下应该怎么做呢?
> 
> --
> 梅劲松
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> 


-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou
New Google Maillist: http://groups-beta.google.com/group/python-cn

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月26日 星期二 08:37

梅劲松  stephen.cn at gmail.com
Tue Jul 26 08:37:33 HKT 2005

有相关资料吗?另外如果用线程的话,屏幕显示和键盘输入还是会竞争。造成阻塞

在 05-7-26,limodou<limodou at gmail.com> 写道:
> windows下也可以。还可以采用线程吧。
> 
> 在 05-7-25,梅劲松<stephen.cn at gmail.com> 写道:
> > 如何获取无阻塞的键盘输入?好象在unix下可以用select,但是在windwos下应该怎么做呢?
> >
> > --
> > 梅劲松
> >
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> >
> >
> >
> 
> 
> --
> I like python!
> My Donews Blog: http://www.donews.net/limodou
> New Google Maillist: http://groups-beta.google.com/group/python-cn
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> 


-- 
梅劲松

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月26日 星期二 09:00

limodou limodou at gmail.com
Tue Jul 26 09:00:53 HKT 2005

因为我在Karrigell中看到过。Karrigell的web
server是使用asyncore来做的。而asyncore就是使用了select来处理的。当时有一个问题就是如何方便地停止Karrigell。因为一旦Karrigell运行起来就停不下来。于是作者在cookbook上找到一个方法就是使用线程方法可以单独做一个输入来停止:

import thread
# start the server in a different thread
thread.start_new_thread(asyncore.loop, ())
print "Type exit to stop server\n"
while True:
   kb = raw_input()
   if kb == 'exit':
       break
asyncore.close_all()

服务是以线程运行,主线程接受用户输入。看一看是否有用。

在 05-7-26,梅劲松<stephen.cn at gmail.com> 写道:
> 有相关资料吗?另外如果用线程的话,屏幕显示和键盘输入还是会竞争。造成阻塞
> 
> 在 05-7-26,limodou<limodou at gmail.com> 写道:
> > windows下也可以。还可以采用线程吧。
> >
> > 在 05-7-25,梅劲松<stephen.cn at gmail.com> 写道:
> > > 如何获取无阻塞的键盘输入?好象在unix下可以用select,但是在windwos下应该怎么做呢?
> > >
> > > --
> > > 梅劲松
> > >
> > > _______________________________________________
> > > python-chinese list
> > > python-chinese at lists.python.cn
> > > http://python.cn/mailman/listinfo/python-chinese
> > >
> > >
> > >
> >
> >
> > --
> > I like python!
> > My Donews Blog: http://www.donews.net/limodou
> > New Google Maillist: http://groups-beta.google.com/group/python-cn
> >
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> >
> >
> >
> 
> 
> --
> 梅劲松
> 


-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou
New Google Maillist: http://groups-beta.google.com/group/python-cn

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月26日 星期二 09:58

Qiangning Hong hongqn at gmail.com
Tue Jul 26 09:58:23 HKT 2005

On 7/25/05, 梅劲松 <stephen.cn at gmail.com> wrote:
> 如何获取无阻塞的键盘输入?好象在unix下可以用select,但是在windwos下应该怎么做呢?

msvcrt模块的kbhit(), getch()

-- 
Qiangning Hong

I'm usually annoyed by IDEs because, for instance, they don't use VIM
as an editor. Since I'm hooked to that, all IDEs I've used so far have
failed to impress me.
   -- Sybren Stuvel @ c.l.python

Get Firefox! <http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月26日 星期二 22:13

梅劲松  stephen.cn at gmail.com
Tue Jul 26 22:13:02 HKT 2005

已经使用线程和回调的方式解决了.谢谢了,代码如下:
def cmd(self,cmd):
        cmd = string.split(cmd,'/')
        if cmd[0]=='login':
            defer.succeed(self.login())
        if cmd[0]=='send':
            if len(cmd) != 3:
                print "输入命令不完整"
            else:
                defer.succeed(self.send_msg(int(cmd[1]),cmd[2]))
        if cmd[0]=='list':
            self.qq.friend_list.clear()
            defer.succeed(self.get_friend_list(0))
        if cmd[0]=='online':
            if len(self.qq.friend_list) == 0:
                print "请先用list命令获取你的好友列表。"
            else:
                self.qq.friend_online.clear()
                defer.succeed(self.get_friend_online(0))    
        else:
            print "请输入命令,参数间隔请使用/符号,例如send/278333853/你好!"
        reactor.callLater(0, self.input)

    def input(self):
        #获取命令
        cmd = threads.deferToThread(raw_input, "Python-QQ:")
        cmd.addCallback(self.cmd)

在 05-7-26,Qiangning Hong<hongqn at gmail.com> 写道:
> On 7/25/05, 梅劲松 <stephen.cn at gmail.com> wrote:
> > 如何获取无阻塞的键盘输入?好象在unix下可以用select,但是在windwos下应该怎么做呢?
> 
> msvcrt模块的kbhit(), getch()
> 
> --
> Qiangning Hong
> 
> I'm usually annoyed by IDEs because, for instance, they don't use VIM
> as an editor. Since I'm hooked to that, all IDEs I've used so far have
> failed to impress me.
>   -- Sybren Stuvel @ c.l.python
> 
> Get Firefox! <http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1>
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> 


-- 
梅劲松

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号