簡體   English   中英

Python 只使用一個核心

[英]Python only uses one core

我有一個 python 腳本,它處理帶有來自 md4 文件的傳感器數據的文件,並將它們繪制在圖像中。 因此,我使用 libs asammdfmatplotlib - 它們依賴於numpy

在我開發腳本的 Windows 主計算機上,一切正常 - 使用了所有線程並且腳本的速度很好。 具有多個線程的 Windows cpu 視圖 但是在腳本也應該運行以處理更多文件的其他設備上,腳本只使用一個內核和多個線程,而在 Ubuntu 16.04 上運行時使用自己編譯的 python 3.7.0:

linux htop 只有一個內核和多個線程

我搜索了很多並嘗試了所有建議的內容 - 其中一些對於 ubuntu 12 來說有點舊..:
https://shahhj.wordpress.com/2013/10/27/numpy-and-blas-no-problemo/
導入 scipy 會破壞 Python 中的多處理支持
為什么導入 numpy 后多處理只使用一個核心?

linux 機器是新安裝的——只安裝了 python3.7、pip3 和 python 庫。 我什至下載了最新的 ubuntu 19.10 映像,其中預裝了 python3.7.5。 我做了什么:

  • 試過 os.sched_setaffinity
  • 試過 os.system("taskset -p 0xff %d" % os.getpid())

pid 20534 的當前關聯掩碼:ff
pid 20534 的新關聯掩碼:ff

  • 安裝了 ATLAS 並設置了替代方案,但這些似乎沒有被采用..

在我的 Windows 機器上,我有:python 3.7.1 和>>> import numpy; numpy.show_config()的輸出>>> import numpy; numpy.show_config() >>> import numpy; numpy.show_config()

blas_mkl_info:   NOT AVAILABLE blis_info:   NOT AVAILABLE openblas_info:
    library_dirs = ['C:\\projects\\numpy-wheels\\numpy\\build\\openblas']
    libraries = ['openblas']
    language = f77
    define_macros = [('HAVE_CBLAS', None)] blas_opt_info:
    library_dirs = ['C:\\projects\\numpy-wheels\\numpy\\build\\openblas']
    libraries = ['openblas']
    language = f77
    define_macros = [('HAVE_CBLAS', None)] lapack_mkl_info:   NOT AVAILABLE openblas_lapack_info:
    library_dirs = ['C:\\projects\\numpy-wheels\\numpy\\build\\openblas']
    libraries = ['openblas']
    language = f77
    define_macros = [('HAVE_CBLAS', None)] lapack_opt_info:
    library_dirs = ['C:\\projects\\numpy-wheels\\numpy\\build\\openblas']
    libraries = ['openblas']
    language = f77
    define_macros = [('HAVE_CBLAS', None)]

在我的 linux 機器上:python 3.7.0 和 numpy 配置:

blas_mkl_info:
  NOT AVAILABLE
blis_info:
  NOT AVAILABLE
openblas_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/local/lib']
    language = c
    define_macros = [('HAVE_CBLAS', None)]
blas_opt_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/local/lib']
    language = c
    define_macros = [('HAVE_CBLAS', None)]
lapack_mkl_info:
  NOT AVAILABLE
openblas_lapack_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/local/lib']
    language = c
    define_macros = [('HAVE_CBLAS', None)]
lapack_opt_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/local/lib']
    language = c
    define_macros = [('HAVE_CBLAS', None)]

我的代碼中沒有任何多線程邏輯或類似的東西 - 所有多線程邏輯都是在我使用的庫中處理的。 我希望有人能幫幫忙。 我覺得很奇怪,我在上面鏈接的問題這么多年后仍然有這種問題。

編輯:原因問題被刪除:我在 bios 中檢查了所有內核和超線程都已激活

asammdf 是完全單線程的。 在 Windows 機器上,您可能將 numpy 與 Intel mkl 庫一起使用,因此這可能是 numpy 操作被矢量化的原因

暫無
暫無

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

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