0
나는 스레딩과 큐잉에 익숙하지 않다. 아래 함수는 단지 문자열을 취하고 잘린 문자 ex: 789 it returns ['789','89','9']
의 목록을 반환합니다. 그러나 나는 이상한 결과를 얻고 있습니다.파이썬과 큐잉 스레딩
def do_stuff(q):
while True:
x=str(q.get())
print [x[i:]for i in range(len(x))]
q.task_done()
q = Queue(maxsize=0)
num_threads = 10
for i in range(num_threads):
worker = threading.Thread(target=do_stuff, args=(q,))
worker.setDaemon(True)
worker.start()
for x in xrange(10,100000):
q.put(x)
q.join()
myoutput :
['10', ['0''1]1'[
, '12''1', ]'2'
][
'13'[, '1'43''[, ]'15''4'
, ]['5'
'16'],
'6' ][[
'17''18', , '7''8'[]]'19'
, '9']
['20'[, '21''0'[, ]'22''1'
, ]['2'
'23' ], [
'3''24'][,
'25''4'[, ]'26''5'
, ]['6'
'27'][,
'28''7', ]'8'
][
'29', '9']
['30', '0']
[['31''32', , '1'['2']'33']
,
['3''34'],
'4'[]'35'
, [['5''36''37'], ,
'6''7'][]
'38'
, '8'[]'39
', '9']
['40'[, '41''0', ]'1'
][
'42'[, '43''2'[, ]'44''3'
, ]'4'
]['45'
, '5'[]'46'
, '6'[]'47'
, '7'][
'48', '8']
['49', '9']
['50'[, '51''0'[, ]'52''1'
, ]'2'
]
['53', ['3''54'],
'4'[[]'55''56'
, , '5''6'][]
'57
', '7'] ..... so on
하지만 예상 출력 :
['10','0']
['11','1']
['12','1'] so on
왜 큐가 무시됩니다?
입니다. print 서술문 주위에 자물쇠를 넣으면 예상 한 결과물을 더 가까이에서 찾을 수 있다고 생각합니다. – dano
@dano는 잠금을 가하는 방법을 안내해 줄 수 있습니다. 스레딩에 익숙하지 않습니다. –
@sundarnataraj 샌다 나타 라지 : 답변과 더 많은 토론이있는 다른 질문에 대한 링크를 제공합니다. – nneonneo