我写了一个继承多进程(). 它有一个序列号。序列号()类属性中的对象。方法自循环()应该读写串行端口。什么时候自循环()被调用,它应该作为一个单独的进程运行,这是要求我写这篇文章的人的要求。但是,我的代码产生了一个奇怪的错误。在
这是我的代码:
from multiprocessing import Process
import serial
import time
class MySerialManager(Process):
def __init__(self, serial_port, baudrate=115200, timeout=1):
super(MySerialManager, self).__init__(target=self.loop)
# As soon as you uncomment this, you'll get an error.
# self.ser = serial.Serial(serial_port, baudrate=baudrate, timeout=timeout)
def loop(self):
# Just some simple action for simplicity.
for i in range(3):
print("hi")
time.sleep(1)
if __name__ == "__main__":
msm = MySerialManager("COM14")
try:
msm.start()
except keyboardInterrupt:
print("caught in main")
finally:
msm.join()
这是错误:
^{pr2}$我还尝试在类之外创建一个串行端口对象并将其传递给构造函数。而且,我试着不继承多进程()但相反地:
self.proc = Process(target=self.loop)
进入课堂
try:
msm.proc.start()
except KeyboardInterrupt:
print("caught in main")
finally:
msm.proc.join()
进入主街区。他们俩都没有解决这个问题。在
有人指出,将多处理和串行端口混合在一起似乎行不通。是真的吗?如果是的话,你能解释一下为什么这不起作用吗?非常感谢任何帮助!在
在windows中,串行对象一旦创建就不能在两个进程(即父进程和子进程)之间共享 因此,在子进程中创建串行对象,并将该对象的引用作为参数传递给其他函数
试试这个:
相关问题 更多 >
编程相关推荐