我有一個功能,它裏面我使用os.fork():功能全部叉之前返回值()完成他們的任務
def translating(words):
'''Translate words using API'''
number_of_threads = 3
t = [] #list to store translated words
l = len(words_words)
n = (l - (l % number_of_threads))/number_of_threads #number of words for each PID I will create
for thread_number in range(number_of_threads):
pid = os.fork()
if pid != 0:
'''print('Process {0} spawned' .format(pid))'''
else:
for i in words[thread_number*n:thread_number*n+n]: #slice of words for each PID
translation = translate.translate(i, 'en')['text'] #API returns list of translated words
for a in translation:
t.append(a)
os._exit(0)
return t
我的問題是「迴歸T」偏偏右後秒(從3)創建PID。在'for-loops'完成迭代之前。 我卡住了,完全不知道爲什麼會發生這種事......我做錯了什麼?
你必須使用'os.wait()'等待孩子完成。否則,這兩個進程獨立運行。 – Barmar
請參閱_Multiple Forks_示例:http://www.petercollingridge.co.uk/blog/running-multiple-processes-python – Barmar
謝謝Barmar,你的建議幫助我,並在實現os.waitpid()後,我的函數不會停止在所有的pids完成他們的工作之前。但是正如user2040251在下面告訴的那樣,我得到的列表是空的,他是絕對正確的,我沒有提過它。所以我會盡我所能分享孩子和家長之間的數據。再次感謝你! – Desprit