우리는 약 120,000 개의 XML 파일을 읽고, (ElementTree
을 사용하여) 구문 분석하고, 태그 값 (fromstring().findall()
) 등을 추출하는 Python 프로그램을 가지고 있습니다. 이것은 시간이 오래 걸리고 있습니다. 스레드를 사용하여 프로그램을 병렬 처리하는 방법을 생각했습니다. 그러나 top
은이 단일 프로세스의 CPU 소비가 약 100 %임을 보여줍니다. 그래서, 제 질문은 정말 도움 스레딩 것입니다. 내 직관은 여분의 CPU가 남아있을 때만 스레딩이 도움이된다는 것입니다.CPU 사용률이 이미 100 %에 가까워지면 멀티 스레딩이 도움이됩니까?
내 시스템의 설정입니다 -
[email protected]:/media/pavan8085/Projects/Pavan/CompBio$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 69
Stepping: 1
CPU MHz: 782.000
BogoMIPS: 3392.44
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072K
NUMA node0 CPU(s): 0-3
PS : 나는 파이썬에 완전히 새로운 오전. 따라서 속도를 향상시키는 데 도움이되는 언어 별 트릭이있을 수 있습니다. 그게 문제라면 더 많은 정보를 제공하게되어 기쁩니다.
[어떤 프로파일 링] (https://docs.python.org/3/library/profile.html)을 보면 시간이 어디서 시작되는지 알 수 있습니다. –
또한 너무 많은 메모리를 사용하지 않도록하십시오. 당신이 fromstring을 사용하고 있다는 사실은 한 번에 적어도 하나의 파일을 전체적으로 메모리로 읽어 들이고 있음을 의미합니다. 모두 읽는다면 시간을 모두 바꿀 수 있습니다. – abarnert