다중 처리를 별도의 파이썬 모듈로 제한 할 수 있는지 궁금합니다. 나는 그래서 멀티 프로세싱과 파이썬 모듈이있는 경우 예를 들어, : 예가져온 모듈을 사용한 다중 처리
#Call from another script
import example
example.f(q, a)
>>> 'Yes' #Confirmation that multiprocessing was used
다중 처리를 별도의 파이썬 모듈로 제한 할 수 있는지 궁금합니다. 나는 그래서 멀티 프로세싱과 파이썬 모듈이있는 경우 예를 들어, : 예가져온 모듈을 사용한 다중 처리
#Call from another script
import example
example.f(q, a)
>>> 'Yes' #Confirmation that multiprocessing was used
:
#example.py
def f(q, a, m='No'):
print m
q.put(a)
if __name__ == '__main__':
a = '123'
m = 'Yes'
q = Queue()
p = Process(target=f, args=(q, a, m))
p.start()
print q.get()
p.join()
은 여전히 멀티를 유지하면서, 가져 오기를 사용하여 모듈과 같은 다른 스크립트에서이를 사용하는 어쨌든 거기 클래스 또는 함수를 만들어이 작업을 수행 할 수 있습니다. 둘 중 하나를 다른 스크립트로 가져올 수 있습니다.
# example.py
from multiprocessing import Process
class Example(object):
def __init__(self, queue):
"""
@type queue: multiprocessing.Queue
"""
self.q = queue
def run(self, a, m=None):
p = Process(target=self.f, args=(a, m))
p.start()
print self.q.get()
p.join()
def f(self, a, m='No'):
print m
self.q.put(a)
이 그런 다음 예에서 가져 : 여기 는 클래스 예입니다
>>> from multiprocessing import Queue
>>> from example import Example
>>> q = Queue()
>>> e = Example(q)
>>> e.run('123', m='Yes')
Yes
123
필자 시작 인수가 F로 명령 줄에서 구문 분석 스크립트를 서브 프로세스 호출을 사용하여 생각 함수 (모듈은 __main__이 실행 된 것처럼 동작합니다) 그러나 배열, 목록 등과 같이 더 복잡한 객체를 보내거나 받아들이 기가 어려워졌습니다. – kezzos