강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

윤병현님의 프로필 이미지
윤병현

작성한 질문수

직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피

hwp 병렬 작업시 클립보드 충돌문제

작성

·

23

0

질문 남겨주셔서 감사합니다.

막히면 언제든 무엇이든 자주 질문 던져주세요.

수학/과학이나 알고리즘과는 달리

업무자동화 코딩은 고민해서 풀리는 경우가 정말 드뭅니다.

다시 말씀드리지만, 질문을 자주자주 남겨주세요.

저도 최대한 빠르게 회신 드리겠습니다.

당부드릴 두 가지가 있습니다.

① 가급적 구체적으로 설명해주세요.
② 특정 챕터 관련 질문 남겨주실 때는,
어느 챕터인지 알려주세요ㅜ

====================================

 

안녕하세요. 일코님

추운데 감기조심하시기 바랍니다.

 

 

자동화시, 표에다가 데이터를 채워넣는 작업이 조금 시간이 많이 걸리고 있습니다.

셀 단위로 데이터를 입력하고 다음셀로 넘어가고 << 이런식으로 하다보니까요..

따라서 판다스에서 불러온 데이터를 표로 복사해서

그대로 hwp 에 적용하고 싶은데, 가장 먼저 떠오른 것이 클립보드 복사 방식입니다.

이렇게하면 수월하지만, 현재 동일한 과정을 4개의 독립스레드에서 나눠서 진행하고있습니다. (4종류의 별개 단어장 작업중)

클립보드는 윈도우에서 전역으로 1개만 존재하는것 같아요..

작업 속도를 향상시키려면 엑셀데이터를 한글 표에 "표복사 ->붙여넣기" 방식으로 한번에 적용할 수 있는 방법이 있다면 참좋을 듯 한데, 이런 방법은 없을까요?

 

감사합니다!

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

윤병현님께서 말씀하신 클립보드를 통한 다중 스레드 작업에서의 충돌 문제는 윈도우의 클립보드가 전역적으로 하나만 존재하기 때문에 발생하는 흔한 문제입니다. 각 프로세스에서 클립보드를 공유하다 보니, 데이터의 일관성을 보장하기 어렵기 때문입니다. 이를 해결하기 위해 몇 가지 방법을 소개드리겠습니다:

  1. 클립보드를 사용하지 않는 방법:

    • Pywin32 라이브러리pyhwp 등으로 HWP API를 사용하여 직접 데이터를 삽입하는 방법을 고려해 보세요. pywin32를 활용해 한글 및 엑셀의 COM 오브젝트를 제어함으로써 보다 동기화된 데이터 전송이 가능합니다.
  2. 파일을 통한 데이터 전환:

    • 엑셀 데이터를 CSV 형식으로 저장하고, 이를 한글에서 가져오도록 만들 수 있습니다. 이 경우 각 독립 스레드는 자신만의 CSV 파일을 관리하므로 충돌이 발생하지 않습니다.
  3. Temporary 데이터 사용:

    • 각 스레드가 자신만의 임시 파일을 만들어 사용하도록 하는 것입니다. 이 방법은 클립보드를 사용하지 않으면서 독립적인 데이터를 관리할 수 있습니다.
  4. 멀티프로세싱 사용:

    • 파이썬의 multiprocessing을 활용하여, 프로세스마다 별개의 파이프를 유지하고 데이터를 저장할 수 있습니다. 클립보드를 사용하지 않는 대신, 프로세스끼리의 병렬 작업이 가능해집니다.
  5. 비동기 프로그래밍:

    • 클립보드를 사용하지 않고, 비동기 I/O를 활용해 비효율성을 줄이는 방향으로 작업을 진행하는 방법입니다. 예를 들어 asyncio와 같은 라이브러리를 사용할 수 있습니다.

위의 방법들 중 적절한 방법을 시도하여 보시면, 병렬 작업 시에 클립보드 관련되는 문제를 피하면서 효율적으로 데이터를 삽입하실 수 있을 것입니다.

또한, 엑셀 데이터를 한글에 삽입하는 다양한 방법에 대한 질문을 참고하시면 보다 구체적인 구현 방식을 보실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

윤병현님의 프로필 이미지
윤병현

작성한 질문수

질문하기