나는 어디에서나 검색했으며 멀티 스레딩으로 루프를 반복하는 간단한 예제를 찾지 못했습니다.파이썬에서의 단순 다중 스레드 for 루프
예를 들어이 루프를 멀티 스레드하려면 어떻게해야합니까?
for item in range(0, 1000):
print item
4 개의 스레드와 같이 잘라낼 수있는 방법이 있습니까? 하나의 스레드는 250 개의 반복이 있습니까?
나는 어디에서나 검색했으며 멀티 스레딩으로 루프를 반복하는 간단한 예제를 찾지 못했습니다.파이썬에서의 단순 다중 스레드 for 루프
예를 들어이 루프를 멀티 스레드하려면 어떻게해야합니까?
for item in range(0, 1000):
print item
4 개의 스레드와 같이 잘라낼 수있는 방법이 있습니까? 하나의 스레드는 250 개의 반복이 있습니까?
가장 쉬운 방법은 multiprocessing.dummy 함께 (대신 프로세스의 스레드를 사용하는)과 Pool
import multiprocessing.dummy as mp
def do_print(s):
print s
if __name__=="__main__":
p=mp.Pool(4)
p.map(do_print,range(0,10)) # range(0,1000) if you want to replicate your example
p.close()
p.join()
은 어쩌면 당신은 당신이 더 여러 개의 CPU를 사용하고 싶지만 여러 가지주의가 너무 경우, 실제 멀티를 시도하려는 및 guidelines.
아마도 다른 방법이 Pool
일 것입니다. 실제로 수행하려는 작업에 따라 필요에 더 잘 맞을 것입니다.
수동으로 분할해야 할 것이다 :
import threading
def ThFun(start, stop):
for item in range(start, stop):
print item
for n in range(0, 1000, 100):
stop = n + 100 if n + 100 <= 1000 else 1000
threading.Thread(target = ThFun, args = (n, stop)).start()
이 코드는 사용 가 멀티 스레딩, 모든 것이 하나의 파이썬 프로세스 내에서 실행되는 것을 의미합니다 (즉, 하나의 파이썬 인터프리터가 시작됩니다) . 다른 대답에서 논의
멀티은 (여러 프로세스하지 스레드에) 여러 파이썬 인터프리터에 몇 가지 코드를 실행 을 의미한다. 이 방법은 사용 가능한 모든 CPU 코어를 사용할 수 있으므로 단순히 병렬 처리가 아닌 코드 속도에 집중할 때 유용합니다 (은 터미널을 싫어할 때까지 숫자를 인쇄합니다!).
multiprocessing.dummy
1. 1
threading
module 밝혀. multiprocessing
과 multiprocessing.dummy
은 동일한 인터페이스를 가지고 있지만, 첫 번째 모듈은 프로세스 인을 사용하고, 후자는 스레드을 사용하여 병렬 처리를 수행합니다.
다중 처리. 더미는 실제로 쓰레드를 사용합니다. 내 대답을 편집하여 더 명확하게 만듭니다. – janbrohl
'multiprocessing.dummy'는 실제로'threading' 모듈을 감싸는 래퍼이지만'multiprocessing' 그 자체는 대답. 어느 것이 선택되는지는 사람이 원하는 행동에 달려 있습니다. 코드는 매우 똑같습니다 (좋은 것입니다). – miraculixx
@miraculixx, 이것이 바로 지금 횡단 된 부분을 완전히 제거하지 않기로 결정한 이유입니다.'multiprocessing'과'multiprocessing.dummy'는 비슷한 인터페이스를 가지고 있습니다 만, 모듈의 선택은 동작 (threads 대 프로세스)에 영향을줍니다. – ForceBru
감사합니다! 'do_print' 함수에 다른 인수를 전달해야한다면? – Anthony
이 다릅니다 - 다중 처리. 문제가 없지만 iterable에 args를 넣어야하는지 확인하려면 - 예 : [zip] (https://docs.python.org/2.7/library/functions)을 사용하십시오. .html # zip) 또는 [list comprehensions] (https://docs.python.org/2.7/tutorial/datastructures.html#list-comprehensions) – janbrohl
어떤 이유로이 코드는 반복 할 스레드를 약 60 개 (!) 생성합니다 ''나 (파이썬 3.5)에 대한 범위 (0, 1000) ... – ForceBru