2012-08-16 45 views
1

我测试蟒蛇多,写简单的程序的Python不明错误:多处理

from multiprocessing import Process 
from time import sleep 

def f(name): 
    print 'hello', name 
    x=1 
    while True: 
     x+=1 
     sleep(1) 
     print 'subprocess '+str(x) 

     if x==10: 
      quit() 

if __name__ == '__main__': 
    p = Process(target=f, args=('bob',)) 
    p.start() 
    x=1 
    while True: 
     x+=1 
     sleep(0.1) 
     print 'main process '+str(x) 
     if x==100: 
      quit() 

它的工作,但我有一点错误:

Traceback (most recent call last): 
     File "ttt.py", line 17, in <module> 
     p.start() 
     File "/usr/lib64/python2.6/multiprocessing/process.py", line 104, in start 
     self._popen = Popen(self) 
     File "/usr/lib64/python2.6/multiprocessing/forking.py", line 99, in __init__ 
     code = process_obj._bootstrap() 
     File "/usr/lib64/python2.6/multiprocessing/process.py", line 242, in _bootstrap 
     sys.stderr.write(e.args[0] + '\n') 
    TypeError: unsupported operand type(s) for +: 'NoneType' and 'str' 

回答

1

使用sys.exit()而不是quit()。后者仅用于交互式解释器。

正如凯文指出的那样,您可以使用returnf正常退出该功能。这可能会更合适。

+0

'return'也适用于这种情况。 – Kevin 2012-08-16 11:59:49

+0

谢谢你的帮助! – Oleg 2012-08-16 12:00:08