[英]Multiprocessing using imported modules
我想知道多處理是否可以限制在單獨的python模塊中。 例如,如果我有一個帶有多處理的python模塊,如下所示:
#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()
無論如何在另一個腳本中使用它作為使用導入的模塊,同時仍保留多處理:
#Call from another script
import example
example.f(q, a)
>>> 'Yes' #Confirmation that multiprocessing was used
是的,您可以通過創建類或函數來實現此目的。 您可以導入另一個腳本。 這是一個類的示例:
# 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.