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

2024-03-25

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

例如:

while True:
    print "hi"

while True:
    print "bye"

在这里,它会不断打印 hi,但根本不会打印 bye(实际代码有一个tracer.execute()一个循环,另一个正在侦听端口,并且它们都独立工作)。


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


Yes.
让两个循环同时独立工作的方法:

您最初的惊讶与有限状态自动机的本质、实际工作原理有关。

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

抽象指令流正在以纯粹的方式执行[SERIAL] https://stackoverflow.com/tags/parallel-processing/info方式,一个接一个。自图灵叔叔以来CPU就没有别的办法了。

您希望同时独立运行更多指令流的愿望称为[CONCURRENT] https://stackoverflow.com/tags/parallel-processing/info流程调度。


您有多种工具可以实现所需的操作方式:

阅读有关较弱形式的内容,仅使用基于线程的并发(由于 Python 特定的 GIL 锁定,它在物理硬件上作为[CONCURRENT] https://stackoverflow.com/tags/parallel-processing/info-处理,但 GIL 交错(它被故意实现为一种非常便宜的避免碰撞的形式,适用于每种情况,这[CONCURRENCY] https://stackoverflow.com/tags/parallel-processing/info可能会介绍)最终将交织每个(现在)[CONCURRENT] https://stackoverflow.com/tags/parallel-processing/info-streams,以便原则上避免同时访问任何Python对象的冲突。如果您对这种一次只执行一个指令流片段(并循环执行 GIL 步进执行的实际顺序)感到满意,那么您可以生活在一个安全且无碰撞的世界中。

Python 可能使用的另一个工具是joblib.Parallel()( joblib.delayed() ),你将必须掌握更多的东西来制作这些(现在是一组完全生成的子进程,每个(是的,每个)都有一个完整的Python状态副本+所有变量(阅读:大量的时间和内存需要产生它们)并且没有相互协调)。

因此,决定哪种形式足以满足您的用例类型,并且最好仔细检查新的阿姆达尔定律重新表述(对的影响costs分布式或并行) https://stackoverflow.com/revisions/18374629/3

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在python中独立运行多个while true循环 的相关文章

随机推荐