Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Loops 管理it之外的循环_Loops_Python 2.7_Raspberry Pi - Fatal编程技术网

Loops 管理it之外的循环

Loops 管理it之外的循环,loops,python-2.7,raspberry-pi,Loops,Python 2.7,Raspberry Pi,我想运行一个循环来拍照。我希望在客户端需要时运行循环,并在需要停止录制视频时停止循环。所有图像都将放在一个视频中。如果我运行循环,我不能做任何事情,直到它停止,所以我没有办法不知道。我既不想设定一个具体的时间,也不想询问客户是否想拍摄下一张照片,因为这会延迟拍摄图像,而且如果要录制一段1秒的视频,键入60次“是”也会很烦人。如果我能做一个前端调用,并在后端运行循环,那将是令人惊讶的。有什么想法吗?谢谢我并不要求完美,但这可以根据您的使用进行修改: import thread try:

我想运行一个循环来拍照。我希望在客户端需要时运行循环,并在需要停止录制视频时停止循环。所有图像都将放在一个视频中。如果我运行循环,我不能做任何事情,直到它停止,所以我没有办法不知道。我既不想设定一个具体的时间,也不想询问客户是否想拍摄下一张照片,因为这会延迟拍摄图像,而且如果要录制一段1秒的视频,键入60次“是”也会很烦人。如果我能做一个前端调用,并在后端运行循环,那将是令人惊讶的。有什么想法吗?谢谢

我并不要求完美,但这可以根据您的使用进行修改:

import thread

try:
    from msvcrt import getch
except ImportError:
    def getch():
        import sys, tty, termios
        fd = sys.stdin.fileno()
        old_settings = termios.tcgetattr(fd)
        try:
            tty.setraw(sys.stdin.fileno())
            ch = sys.stdin.read(1)
        except:
            pass
        finally:
            termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
        return ch

char = None
def keypress():
    global char
    char = getch()

thread.start_new_thread(keypress, ())

i=1
while True:
    if char is not None:
        print "Key pressed is {} -- exiting loop".format(char)
        break
    print "Loop has run {} times".format(i)
    i+=1

听起来您想使用多处理模块或线程模块。@dano有什么区别?它说它们非常相似。线程让您创建和管理线程,这是单个进程中的一系列执行。因此,一个进程同时运行两个线程;一个线程正在拍照,另一个线程正在等待用户输入,以提醒拍照线程停止。多处理本质上是做同样的事情,但是使用单独的进程来创建单独的执行序列,而不是线程。因为我需要:-开玩笑,我修改了没有sleep语句。。。只是一个演示。它显示:回溯最近的调用最后:File/Users/juan/Documents/eg.py,第21行,在keypress char=getch File/Users/juan/Documents/eg.py,第7行,在getch fd=sys.stdin.fileno io.UnsupportedOperation:filenow你在使用什么操作系统?Mac OS X 10.9小牛,python 2.7.6,但不要太担心,我找到了另一种使用它的方法,我使用了带有MacOSX实现的LiteralGetch类