Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
while循环中的Python输入_Python_Bots_Irc - Fatal编程技术网

while循环中的Python输入

while循环中的Python输入,python,bots,irc,Python,Bots,Irc,我正在用python制作一个IRC机器人, 现在我想要一些控制台命令 主函数在while循环中,因此我无法将input\u raw()放入。有人知道如何在不中断循环的情况下获取用户输入吗 谢谢 您可以尝试将非阻塞套接字与选择一起使用。比如: from sys import stdin from select import select while True: print "Enter command> ", # Add on_write sockets as necess

我正在用python制作一个IRC机器人, 现在我想要一些控制台命令

主函数在while循环中,因此我无法将
input\u raw()
放入。有人知道如何在不中断循环的情况下获取用户输入吗


谢谢

您可以尝试将非阻塞套接字与
选择一起使用。比如:

from sys import stdin
from select import select

while True:
    print "Enter command> ",
    # Add on_write sockets as necessary
    on_read, _, _ = select([stdin], [], [], 5)
    if on_read:
        command = stdin.readline()
        print "Now I can process you command..."
    else:
        print "No command, we can do here something else..."

解决问题,使用线程,
来源:

使用线程。一个用于IRC处理,一个用于输入。我制作了两个线程,一个用于IRC基,一个用于a=raw_输入,只是为了测试。。。但是我不能做任何输入用你的代码示例更新你的问题只有当IRC bot函数可以在每个循环中“泵送”时,这才有效。如果它是一个进入自己阻塞循环的服务,那么仍然需要线程。@jdi如果IRC bot函数是一个需要进行大量计算的函数或类似的东西(使用太多CPU),那么线程将不会有多大帮助。但通常情况下,IRC bot应该执行读/写操作。是的,我并没有真正指定OP应该使用线程覆盖进程。我刚才说的是,OP可能必须完全重组“irc机器人”功能,使其能够处理挂起的操作并退出,这样它才能在您的建议下工作。嗯,这对我来说有点太复杂了。。。当我学习了更多python之后,我将重新研究这个问题