Python同时进行多个循环

标签 python loops

我知道在 Python 中不可能同时运行多个循环。 无论如何,我需要实现的是我有一个循环运行,每 0.25 秒读取一次传感器数据负载。 同时,我有并行运行的信号设备,需要每 3 秒发送一次信号。 我的问题是实现这一目标的最佳做法是什么?

编写两个脚本并并行运行它们有意义吗? 使用线程有意义吗? 为了使这项工作有任何其他可能性吗?

如果有代码示例,我将不胜感激。

谢谢!

编辑: 两个循环是绝对独立的。 因此,假设当脚本 1 正在运行时读取传感器数据,当其中一个传感器接收到的值 < 300 时,它应该运行脚本 2 来发送信号。同时,当传感器数据大于 300 时,它应该停止脚本 2。

最佳答案

“Python 同时进行多个循环。我知道这是不可能的 [...]”——这看起来真的很有趣。

可以同时运行两个循环,正如您所描述的那样。这两种方式都很有意义,具体取决于您实际需要和想要什么。如果任务完全独立,则应将其作为两个脚本运行。如果您需要这两个循环来实现一项任务并且将它们放在一个文件中是有意义的,您可以使用 multiprocessing .

已针对 python 2.7.5+ 和 3.3.2+ 进行测试。

这里是一些最小的例子:

from multiprocessing import Process
import time

def f(name):
    print('hello', name)
    time.sleep(10)

def d(name):
    print('test2', name)
    time.sleep(10)

if __name__ == '__main__':
    p1 = Process(target=f, args=('bob',))
    p2 = Process(target=d, args=('alice',))
    p1.start()
    p2.start()
    p1.join()
    p2.join()

脚本运行了 10 秒,两个字符串都被立即打印出来,这意味着一切正常。

time python3 ./process.py 
hello bob
test2 alice

real  0m10.073s
user  0m0.040s
sys   0m0.016s

关于Python同时进行多个循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21045179/

相关文章:

python - 全部与全部点积

python - 迭代 numpy 数组的函数

JAVA:读取.txt文件并将 double 存储到数组中

java - 为什么这个 Java 在代码创建无限循环时执行?

javascript - jQuery 动画循环回调

java - 使用循环进行输入验证和异常处理

python - "lambda"在 Python 中是什么意思,最简单的使用方法是什么?

python - 如何 pip 安装 Python 程序,使其具有命令行快捷方式

python - 将列表中的元素添加到字典并增加值

ruby - 使用Ruby,您可以在Begin循环中使用多个救援吗?