制作Python多处理.管道两个函数之间

2024-10-03 02:35:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用一个单线传感器(ds18b20)读取温度,并将其用于PI算法来控制SSR继电器。我想在这两个函数之间使用一个管道来发送温度,并使te“Reg”函数尽可能快地运行。如果我不使用管道,Reg函数会等待温度函数(使用0.75秒),输出就会出错。。。 有谁能告诉我如何使用管道功能吗。??在

代码:

import time
import RPi.GPIO as GPIO
import os

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(22, GPIO.OUT)


def temperatur(self):
 while True:

    tfile = open("/sys/bus/w1/devices/28-00000433f810/w1_slave")
    text = tfile.read()
    tfile.close()
    secondline = text.split("\n")[1]
    temperaturedata = secondline.split(" ")[9]
    temp2 = float(temperaturedata[2:])
    self.temp = temp2 / 1000
    print self.temp


def reg(self):

  while True:

    ek = self.ref - self.temp
    P_del = self.Kp * ek
    I_del = ((self.Kp * self.Syklustid) / self.Ti) * ek
    Paadrag = P_del + I_del
    if Paadrag > 100:
        Paadrag = 100
    if Paadrag < 0:
        Paadrag = 0    
    print "Paadrag: ", Paadrag, "  Temperatur: ", self.temp
    duty = Paadrag / 100.0
    on_time = self.Syklustid * (duty)
    off_time = self.Syklustid * (1.0-duty)
    print "On_time: ", on_time, "  Off_time: ", off_time
    GPIO.output(22, GPIO.HIGH)
    time.sleep(on_time)
    GPIO.output(22, GPIO.LOW)
    time.sleep(off_time

if __name__ == '__main__':

Tags: 函数importselfgpioif管道time温度
1条回答
网友
1楼 · 发布于 2024-10-03 02:35:30

这直接来自python文档: http://docs.python.org/2/library/multiprocessing.html

from multiprocessing import Process, Pipe

def f(conn):
    conn.send([42, None, 'hello'])
    conn.close()

if __name__ == '__main__':
    parent_conn, child_conn = Pipe()
    p = Process(target=f, args=(child_conn,))
    p.start()
    print parent_conn.recv()   # prints "[42, None, 'hello']"
    p.join()

我用共享状态得到了更好的结果。尤其是对于像温度这样的简单数据(我假设是一个数字,不是一个复杂的自定义对象或其他任何东西),这里有一个很小的示例(同样,您可以在python文档中找到更多)

^{pr2}$

相关问题 更多 >