进程不在python中启动

时间:2013-07-11 21:48:03

标签: python multiprocessing

我创建了两个进程,但它们没有根据此代码启动。 任何想法是什么问题?

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()

1 个答案:

答案 0 :(得分:3)

我猜你正在使用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__模块,所以你会遇到无休止的产生进程循环,除非你不这样做保护您的初始代码。