2017-06-20 26 views
0
import multiprocessing 

def printt(q):  
    if q.empty():  
     pass 
    else: 
     data = q.get() 
     print data 

if __name__ == "__main__": 
    q = multiprocessing.JoinableQueue() 
    for i in range(5): 
     q.put() 
    while 1: 
     for i in range(3): 
      process = multiprocessing.Process(target=printt, arg=(q,)) 
      process.start() 
      process.join() 
     q.join() 

代碼如上所示。我的問題是我如何控制多餘的過程,因爲當我把可以分成int的項目數量的時候,上面的代碼會產生錯誤。我怎樣才能完成我的打印數量任務而不是提高錯誤。一些python多處理問題的打印號碼

+0

你能描述在一個更好的辦法的問題? –

+0

你沒有把任何東西放到隊列中......所以 'TypeError:put()缺少1個必需的位置參數:'obj'' –

+0

我已經把數字從1到5放入JoinableQueue。 –

回答

0

代碼來解決這個問題:

import multiprocessing 

def printt(q): 
    while 1: 
     if q.empty(): 
      break 
     else: 
      data = q.get() 
      q.task_done() 
      print data 


if __name__ == "__main__": 
    q = multiprocessing.JoinableQueue() 
    for i in range(5): 
     q.put(i) 
    for i in range(3): 
     process = multiprocessing.Process(target=printt, args=(q,)) 
     process.start() 
    q.join() 
    print "over"