คำถามติดแท็ก multiprocessing

การประมวลผลหลายขั้นตอนคือการใช้หน่วยประมวลผลกลาง (ซีพียู) สองหน่วยหรือมากกว่าภายในระบบคอมพิวเตอร์เครื่องเดียว รายละเอียดการใช้งานและการใช้งานที่เกี่ยวข้องแตกต่างกันไปตามระบบปฏิบัติการและภาษาโปรแกรม ดังนั้นควรเพิ่มแท็กสำหรับทั้ง OS และภาษาเมื่อใช้แท็กนี้

19
Python มัลติโพรเซสซิง pool.map สำหรับหลาย ๆ อาร์กิวเมนต์
ใน Python Multrocessing library มีตัวแปรของ pool.map ซึ่งรองรับหลายอาร์กิวเมนต์หรือไม่ text = "test" def harvester(text, case): X = case[0] text+ str(X) if __name__ == '__main__': pool = multiprocessing.Pool(processes=6) case = RAW_DATASET pool.map(harvester(text,case),case, 1) pool.close() pool.join()

3
การประมวลผลหลายตัวพูล: เมื่อใดที่จะใช้ใช้ Apply_async หรือแผนที่
ฉันไม่ได้เห็นตัวอย่างที่ชัดเจนกับกรณีการใช้งานสำหรับPool.apply , Pool.apply_asyncและPool.map ฉันใช้เป็นหลักPool.map; ข้อดีของผู้อื่นคืออะไร

8
หลามมัลติโพรเซสซิง PicklingError: ไม่สามารถดอง <type 'function'>
ฉันขอโทษที่ฉันไม่สามารถทำซ้ำข้อผิดพลาดด้วยตัวอย่างที่ง่ายขึ้นและรหัสของฉันซับซ้อนเกินกว่าจะโพสต์ ถ้าฉันรันโปรแกรมใน IPython shell แทนที่จะเป็น Python ปกติสิ่งต่าง ๆ ก็ใช้ได้ดี ฉันค้นหาบันทึกย่อก่อนหน้านี้เกี่ยวกับปัญหานี้ พวกเขาทั้งหมดเกิดจากการใช้พูลเพื่อเรียกใช้ฟังก์ชันที่กำหนดไว้ในฟังก์ชันคลาส แต่นี่ไม่ใช่กรณีสำหรับฉัน Exception in thread Thread-3: Traceback (most recent call last): File "/usr/lib64/python2.7/threading.py", line 552, in __bootstrap_inner self.run() File "/usr/lib64/python2.7/threading.py", line 505, in run self.__target(*self.__args, **self.__kwargs) File "/usr/lib64/python2.7/multiprocessing/pool.py", line 313, in _handle_tasks put(task) PicklingError: Can't pickle &lt;type 'function'&gt;: attribute lookup …

21
ฉันจะเข้าสู่ระบบในขณะที่ใช้มัลติโปรเซสเซอร์ใน Python ได้อย่างไร
ตอนนี้ผมมีโมดูลกลางในกรอบที่ spawns กระบวนการหลายโดยใช้ Python 2.6 โมดูลmultiprocessing เพราะมันใช้multiprocessingมีระดับโมดูลบันทึก multiprocessing LOG = multiprocessing.get_logger()ทราบ ต่อเอกสารตัวบันทึกนี้มีการล็อกที่ใช้ร่วมกันในกระบวนการเพื่อให้คุณไม่สับสนกับสิ่งต่างsys.stderrๆ ปัญหาที่ฉันมีตอนนี้คือโมดูลอื่น ๆ ในกรอบไม่ได้ประมวลผลแบบหลายตัวรู้ วิธีที่ฉันเห็นฉันต้องทำการอ้างอิงทั้งหมดในโมดูลกลางนี้โดยใช้การบันทึกแบบมัลติโพรเซสซิง นั่นเป็นสิ่งที่น่ารำคาญภายในเฟรมเวิร์กนับประสาสำหรับลูกค้าทั้งหมดของเฟรมเวิร์ก มีทางเลือกอื่นที่ฉันไม่คิดหรือไม่

12
ไม่สามารถเลือก <type 'instancemethod'> เมื่อใช้มัลติโพรเซสซิง Pool.map ()
ฉันพยายามที่จะใช้งานmultiprocessingของPool.map()ฟังก์ชั่นที่จะแบ่งออกงานพร้อมกัน เมื่อฉันใช้รหัสต่อไปนี้มันทำงานได้ดี: import multiprocessing def f(x): return x*x def go(): pool = multiprocessing.Pool(processes=4) print pool.map(f, range(10)) if __name__== '__main__' : go() อย่างไรก็ตามเมื่อฉันใช้มันในแนวทางเชิงวัตถุมากกว่ามันไม่ทำงาน ข้อความแสดงข้อผิดพลาด: PicklingError: Can't pickle &lt;type 'instancemethod'&gt;: attribute lookup __builtin__.instancemethod failed สิ่งนี้เกิดขึ้นเมื่อโปรแกรมหลักของฉันคือ: import someClass if __name__== '__main__' : sc = someClass.someClass() sc.go() และต่อไปนี้เป็นsomeClassชั้นเรียนของฉัน: import multiprocessing class someClass(object): def __init__(self): …

1
multiprocessing.Pool: map_async และ imap ต่างกันอย่างไร
ฉันพยายามที่จะเรียนรู้วิธีการใช้งูใหญ่multiprocessingแพคเกจ แต่ผมไม่เข้าใจความแตกต่างระหว่างและmap_async imapฉันสังเกตเห็นว่าทั้งสองmap_asyncและimapถูกดำเนินการแบบอะซิงโครนัส ดังนั้นเมื่อไรฉันจึงควรใช้อันอื่น และฉันจะดึงผลลัพธ์ที่ส่งคืนมาได้map_asyncอย่างไร? ฉันควรใช้สิ่งนี้หรือไม่? def test(): result = pool.map_async() pool.close() pool.join() return result.get() result=test() for i in result: print i

18
มัลติโพรเซสซิง: วิธีใช้ Pool.map กับฟังก์ชั่นที่กำหนดในคลาสได้อย่างไร?
เมื่อฉันเรียกใช้บางสิ่งเช่น: from multiprocessing import Pool p = Pool(5) def f(x): return x*x p.map(f, [1,2,3]) มันใช้งานได้ดี อย่างไรก็ตามการวางสิ่งนี้เป็นฟังก์ชันของคลาส: class calculate(object): def run(self): def f(x): return x*x p = Pool() return p.map(f, [1,2,3]) cl = calculate() print cl.run() ทำให้ฉันมีข้อผิดพลาดต่อไปนี้: Exception in thread Thread-1: Traceback (most recent call last): File "/sw/lib/python2.6/threading.py", line 532, in …

2
มัลติโพรเซสซิง - ไปป์เทียบกับคิว
อะไรคือความแตกต่างพื้นฐานระหว่างการรอคิวและท่อในแพคเกจ multiprocessing งูใหญ่ ? ในสถานการณ์ใดควรเลือกหนึ่งในอีกสถานการณ์หนึ่ง จะใช้Pipe()เมื่อไร? จะใช้Queue()เมื่อไร?

1
Concurrent.futures vs Multiprocessing ใน Python 3
Python 3.2 เปิดตัวConcurrent Futuresซึ่งเป็นส่วนผสมขั้นสูงของโมดูลการทำเกลียวและมัลติโพรเซสซิ่งที่เก่ากว่า อะไรคือข้อดีและข้อเสียของการใช้สิ่งนี้สำหรับงานที่ผูกกับ CPU ผ่านโมดูลมัลติโปรเซสเซอร์ที่เก่ากว่า? บทความนี้แสดงให้เห็นว่าพวกเขาทำงานได้ง่ายขึ้น - เป็นอย่างนั้นหรือ

6
อะไรคือความแตกต่างระหว่างโมดูลเธรดและโมดูลหลายกระบวนการ?
ฉันกำลังเรียนรู้วิธีใช้threadingและmultiprocessingโมดูลใน Python เพื่อรันการดำเนินการบางอย่างพร้อมกันและเร่งความเร็วโค้ด ฉันพบว่าสิ่งนี้ยาก (อาจเป็นเพราะฉันไม่มีพื้นฐานทางทฤษฎีเกี่ยวกับเรื่องนี้) ที่จะเข้าใจว่าความแตกต่างระหว่างthreading.Thread()วัตถุกับวัตถุนั้นคือmultiprocessing.Process()อะไร นอกจากนี้ฉันยังไม่ชัดเจนว่าจะสร้างอินสแตนซ์คิวงานได้อย่างไรและมีเพียง 4 (เช่น) ที่ทำงานแบบขนานในขณะที่อีกคนรอให้ทรัพยากรว่างก่อนที่จะดำเนินการ ฉันพบว่าตัวอย่างในเอกสารประกอบชัดเจน แต่ไม่ละเอียดถี่ถ้วนมากนัก ทันทีที่ฉันพยายามทำให้ซับซ้อนขึ้นเล็กน้อยฉันก็ได้รับข้อผิดพลาดแปลก ๆ มากมาย (เช่นวิธีการที่ไม่สามารถดองได้เป็นต้น) ดังนั้นฉันควรใช้โมดูลthreadingและเมื่อmultiprocessingใด คุณสามารถเชื่อมโยงฉันกับแหล่งข้อมูลบางส่วนที่อธิบายแนวคิดเบื้องหลังโมดูลทั้งสองนี้และวิธีใช้อย่างเหมาะสมสำหรับงานที่ซับซ้อนได้หรือไม่

10
แป้นพิมพ์ขัดจังหวะด้วย Multrocessing Pool ของ python
ฉันจะจัดการกับเหตุการณ์ KeyboardInterrupt ด้วยพูลการประมวลผลหลายตัวของ python ได้อย่างไร นี่คือตัวอย่างง่ายๆ: from multiprocessing import Pool from time import sleep from sys import exit def slowly_square(i): sleep(1) return i*i def go(): pool = Pool(8) try: results = pool.map(slowly_square, range(40)) except KeyboardInterrupt: # **** THIS PART NEVER EXECUTES. **** pool.terminate() print "You cancelled the program!" sys.exit(1) print …

3
เหตุใดการประมวลผลหลายขั้นตอนจึงใช้เพียงคอร์เดียวหลังจากที่ฉันนำเข้าจำนวน
ฉันไม่แน่ใจว่าสิ่งนี้นับเป็นปัญหาระบบปฏิบัติการมากกว่าหรือไม่ แต่ฉันคิดว่าฉันจะถามที่นี่ในกรณีที่ใครก็ตามมีความเข้าใจบางอย่างจากจุดสิ้นสุดของ Python ฉันพยายามขนานforลูปที่ใช้CPU หนักjoblibแต่ฉันพบว่าแทนที่จะกำหนดให้แต่ละกระบวนการของผู้ปฏิบัติงานถูกกำหนดให้กับคอร์ที่แตกต่างกันฉันพบว่ากระบวนการทั้งหมดถูกกำหนดให้อยู่ในคอร์เดียวกันและไม่มีการเพิ่มประสิทธิภาพ นี่เป็นตัวอย่างที่ไม่สำคัญมาก ... from joblib import Parallel,delayed import numpy as np def testfunc(data): # some very boneheaded CPU work for nn in xrange(1000): for ii in data[0,:]: for jj in data[1,:]: ii*jj def run(niter=10): data = (np.random.randn(2,100) for ii in xrange(niter)) pool = Parallel(n_jobs=-1,verbose=1,pre_dispatch='all') results = …

4
วัตถุหน่วยความจำที่ใช้ร่วมกันในการประมวลผลหลายขั้นตอน
สมมติว่าฉันมีอาร์เรย์จำนวนมากในหน่วยความจำฉันมีฟังก์ชันfuncที่รับอาร์เรย์ยักษ์นี้เป็นอินพุต (พร้อมกับพารามิเตอร์อื่น ๆ ) funcด้วยพารามิเตอร์ที่แตกต่างกันสามารถทำงานแบบขนานได้ ตัวอย่างเช่น: def func(arr, param): # do stuff to arr, param # build array arr pool = Pool(processes = 6) results = [pool.apply_async(func, [arr, param]) for param in all_params] output = [res.get() for res in results] ถ้าฉันใช้ไลบรารีการประมวลผลหลายขั้นตอนอาร์เรย์ขนาดยักษ์นั้นจะถูกคัดลอกหลายครั้งในกระบวนการต่างๆ มีวิธีที่จะให้กระบวนการต่างๆใช้อาร์เรย์เดียวกันได้หรือไม่? วัตถุอาร์เรย์นี้เป็นแบบอ่านอย่างเดียวและจะไม่มีการแก้ไข จะมีอะไรซับซ้อนไปกว่านั้นถ้า arr ไม่ใช่อาร์เรย์ แต่เป็นวัตถุ python โดยพลการมีวิธีแบ่งปันหรือไม่? [แก้ไข] …

5
RuntimeError บน windows ที่พยายามประมวลผลหลาย python
ฉันกำลังลองใช้โปรแกรม python อย่างเป็นทางการตัวแรกโดยใช้ Threading และ Multiprocessing บนเครื่อง windows ฉันไม่สามารถเปิดใช้งานกระบวนการได้โดย python ให้ข้อความต่อไปนี้ สิ่งนี้คือฉันไม่ได้เปิดเธรดของฉันในโมดูลหลัก เธรดได้รับการจัดการในโมดูลแยกต่างหากภายในคลาส แก้ไข : โดยวิธีการที่รหัสนี้ทำงานได้ดีบน Ubuntu ไม่ค่อยมีบน windows RuntimeError: Attempt to start a new process before the current process has finished its bootstrapping phase. This probably means that you are on Windows and you have forgotten to use the …

4
การประมวลผลหลายขั้นตอนเทียบกับมัลติเธรดเทียบกับ asyncio ใน Python 3
ฉันพบว่าในหลาม 3.4 มีห้องสมุดที่แตกต่างกันไม่กี่ multiprocessing / เกลียว: multiprocessing VS เกลียว VS asyncio แต่ไม่รู้จะใช้อันไหนดีหรือ "แนะนำ" พวกเขาทำสิ่งเดียวกันหรือแตกต่างกัน? ถ้าเป็นเช่นนั้นใช้สำหรับอะไร? ฉันต้องการเขียนโปรแกรมที่ใช้มัลติคอร์ในคอมพิวเตอร์ของฉัน แต่ฉันไม่รู้ว่าควรเรียนห้องสมุดไหนดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.