2012-08-16 43 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