1

我创建了两个进程,但它们没有根据此代码启动。知道有什么问题吗?

import serial
from multiprocessing import Process

ser=serial.Serial('COM8',115200)

c=" "
out=" "

def pi():
 print ("started")
 out=" "
 while 1:
 #  loop contents

def man():

 while(1):
  # loop contents

p1=Process(target=pi,args=())
p2=Process(target=man,args=())

p1.start() 
p2.start()
p1.join()
p2.join()
4

1 回答 1

4

我猜你用的是windows...

将您的初始化代码放在一个if __name__ == '__main__':块中:

import serial
from multiprocessing import Process

ser=serial.Serial('COM8',115200)

c=" "
out=" "

def pi():
    print ("started")
    out=" "
    while 1:
    #  loop contents

def man():

    while(1):
        # loop contents

if __name__ == '__main__':

    p1=Process(target=pi,args=())
    p2=Process(target=man,args=())

    p1.start() 
    p2.start()
    p1.join()
    p2.join()

在 Windows 上,要解决缺少fork()每个新启动的子进程的问题,必须导入__main__模块,因此除非您不保护初始化代码,否则您将遇到生成进程的无限循环。

于 2013-07-11T22:06:47.557 回答