我知道在 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/