기본적으로 다른 모듈에서 가져온 항목이 많을수록 모듈 기능이 전혀 사용되지 않아도 이러한 다중 처리 작업이 더 오래 걸립니다. 각 프로세스가 모든 것을 다시 가져와야합니까? 무슨 일 이니?가져 오기에 다중 처리 비용이 들게되는 이유는 무엇입니까?
import time
time1 = time.time()
import multiprocessing as mp
import numpy as np # Random imports (not used)
import PIL
import PySide
import pandas
# print time.time() - time1 # here this prints 0.0
class Multi(object):
def __init__(self, queue):
self.q = queue
def run(self, a):
p = mp.Process(target=f, args=(a, q))
p.start()
print self.q.get()
p.join()
class MultiPool(object):
def __init__(self, N):
self.N = N
self.pool = mp.Pool(processes = self.N)
def run(self):
result = self.pool.map_async(f1, ((i,) for i in range(self.N)))
print result.get()
def f(a, q):
for i in range(10000000):
b = i
q.put(b)
def f1(a):
for i in range(10000000):
b = i
return b
if __name__ == '__main__':
q = mp.Queue()
e = Multi(q)
# time1 = time.time()
print f1(0)
print time.time() - time1
time1 = time.time()
e.run('123')
print time.time() - time1
time1 = time.time()
mpool = MultiPool(2)
mpool.run()
print time.time() - time1
# Output with random imports:
>9999999
>0.246000051498
>9999999
>0.693000078201
>[9999999, 9999999]
>0.720999956131
# Output without imports:
>9999999
>0.246000051498
>9999999
>0.315999984741
>[9999999, 9999999]
>0.313999891281
스크립트의 출력을 게시하십시오 –
수입품을 제거하기 위해 무엇을합니까? 두 번째 산출물은 어떻게 얻습니까? –
은 사용되지 않은 가져 오기를 주석으로 처리합니다. 더 많은 수입을 더하면 멀티 프로세싱 출력이 더 오래 걸립니다. – kezzos