在python中独立运行多个true循环

时间:2017-12-03 00:12:04

标签: python-2.7 while-loop

基本上我的代码中有2个“while True:”循环。两个循环都在最后。但是,当我运行代码时,只会运行第一个while True:循环,而忽略第二个循环。

例如:

while True:
    print "hi"

while True:
    print "bye"

在这里,它将连续打印hi,但根本不打印再见(实际代码有一个循环tracer.execute(),另一个是监听端口,它们都是自己工作的)。

有没有办法让两个循环同时独立工作?

1 个答案:

答案 0 :(得分:1)

是。
一种让两个循环同时独立工作的方法:

你最初的惊喜与性质有关,有限状态 - 自动机实际上是如何工作的。

[0]: any-processing-will-always-<START>-here
[1]: Read a next instruction
[2]: Execute the instruction
[3]: GO TO [1]

抽象指令流正以纯粹的 [SERIAL] 方式一个接一个地执行。自从叔叔图灵以来,没有其他方法可以在CPU中使用。

您希望独立运行更多指令流的愿望称为 [CONCURRENT] 流程安排。

你有几种工具可以实现想要的操作方法:

仅使用基于线程的并发(通过特定于Python的GIL锁定,但在物理硬件上以[CONCURRENT]执行 - 来读取较弱的表单 - 处理,但GIL交错(这是[CONCURRENCY]可能引入的每个案例的一种非常便宜的避免形式的故意实现)将最终交错每个(现在){{3} } -streams,以便主要避免同时碰撞任何Python对象。如果你对这个execute-just-one-instruction-stream-fragment-at-time很好(并且循环它们的实际GIL步骤执行的顺序,你可以生活在一个安全无碰撞的世界。

Python可能使用的另一个工具是 joblib.Parallel()( joblib.delayed() ) ,你需要掌握更多的东西才能制作这些(现在是一组完全生成的子进程,每个(是) ,每个)拥有python-state +所有变量的完整副本(读取:生成&#39; em所需的大量时间和内存),并且没有相互协调。

因此,确定哪种形式足以满足您的用例类型,[CONCURRENT]