我知道在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()
Run Code Online (Sandbox Code Playgroud)
脚本运行10秒,两个字符串立即打印,这意味着一切正常.
time python3 ./process.py
hello bob
test2 alice
real 0m10.073s
user 0m0.040s
sys 0m0.016s
Run Code Online (Sandbox Code Playgroud)