簡體   English   中英

多核處理 Python 不打印函數的輸出

[英]Multicore Processing Python dosent print the output of a function

我不明白為什么代碼沒有在這個非常愚蠢的程序的控制台中打印輸出的原因。

import numpy as np
from multiprocessing import Process

def calc2(nucleo, tope):
    for i in range(0, tope):
        print(str(np.sqrt(i)) + "  el nucleo es  " + str(nucleo))


processes = []

for i in range(os.cpu_count()):
    print("registering process %d" % i)
    processes.append(Process(target=calc2, args=(i, 100, )))

for process in processes:
    process.start()

for process in processes:
    process.join()

至於如何獲取返回值,這里有一個選項

import os
import numpy as np
import multiprocessing as mp

def calc2worker(args):
    return calc2(*args)

def calc2(nucleo, tope): 
    return ["{} el nucleo es {}".format(np.sqrt(i), nucleo)
        for i in range(0, tope)]

if __name__ == "__main__":
    pool = mp.Pool() # defaults to os.cpu_count()
    data_generator = ((i, 100) for i in range(os.cpu_count()))
    for result in pool.map(calc2worker, data_generator):
        for line in result:
            print(line)
    pool.close()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM