제 프로그램에서 (매우 느린 다른 서버에서) 3-4 개의 파일을 동시에 다운로드해야합니다. 파이썬 스레드 또는 Qt 스레드 관련된 솔루션을 알고 있지만 궁금하네요 : 그것은 꽤 일반적인 작업을 보인다 이후 어쩌면 내가 URL을 피드 및 단순히 파일을받을 라이브러리가? 미리 감사드립니다.동시 파일을 파이썬과 qt로 다운로드
2
A
답변
3
정말 라이브러리가 필요하지 않습니다. 이것은 쓰레드를 간단히 사용하는 것입니다 (물론 쓰레드가 '단순'할 수 있기 때문에). 예 : http://www.artfulcode.net/articles/multi-threading-python/ 깔끔한 튜토리얼.
7
예, 하나가 있습니다. - pycurl.
curl은 저수준이기 때문에 '간단히'하지는 않지만 필요한 것은 정확히 수행합니다. URL을 제공하면 동시에 비동기 적으로 다운로드됩니다.
import pycurl
from StringIO import StringIO
def LoadMulti(urls):
m = pycurl.CurlMulti()
handles = {}
for url in urls:
c = pycurl.Curl()
c.setopt(pycurl.URL, url)
data = StringIO()
header = StringIO()
c.setopt(pycurl.WRITEFUNCTION, data.write)
c.setopt(pycurl.HEADERFUNCTION, header.write)
handles[url] = dict(data=data, header=header, handle=c)
m.add_handle(c)
while 1:
ret, num_handles = m.perform()
if ret != pycurl.E_CALL_MULTI_PERFORM: break
while num_handles:
ret = m.select(1.0)
if ret == -1: continue
while 1:
ret, num_handles = m.perform()
if ret != pycurl.E_CALL_MULTI_PERFORM: break
return handles
res = LoadMulti(['http://pycurl.sourceforge.net/doc/pycurl.html', 'http://pycurl.sourceforge.net/doc/curlobject.html', 'http://pycurl.sourceforge.net/doc/curlmultiobject.html'])
for url, d in res.iteritems():
print url, d['handle'].getinfo(pycurl.HTTP_CODE), len(d['data'].getvalue()), len(d['header'].getvalue())
이러한 while 루프에서 GUI 업데이트를 실행하면 인터페이스가 멈추지 않습니다.
관련 문제
- 1. libtorrent - 파이썬과 토런트 다운로드
- 2. 동시 다운로드 한도
- 3. iphone에서 동시 백그라운드 다운로드
- 4. 자바 다운로드 동시 데이터
- 5. 파일 동시 다운로드 - 가장 좋은 방법은
- 6. C++/Qt로 RTF 파일을 읽고 쓰십시오.
- 7. 브라우저에서 최대 동시 파일 다운로드 수는 얼마입니까?
- 8. Qt로 직렬화
- 9. 파이썬과 검색?
- 10. 파이썬과 문
- 11. Qt로 안전한 파일 업로드
- 12. asp.net mvc 파일을 다운로드
- 13. w3wp가 다운로드 파일을 처리했습니다.
- 14. PHP 파일을 다운로드 중입니까?
- 15. 오디오 파일을 iTunes에 다운로드
- 16. 인터넷에서 파일을 다운로드 하시겠습니까?
- 17. 아이폰은 여러 파일을 다운로드
- 18. 파일을 사용하여 파일 다운로드
- 19. 음악 파일을 iphone에 다운로드
- 20. 파이썬과 공장
- 21. 파이썬과 프로세스
- 22. 파이썬과 회문
- 23. 파이썬과 정규식
- 24. 파이썬과 함수
- 25. Asp.net 및/또는 IIS에서 동시 다운로드 수를 어떻게 제한합니까?
- 26. 같은 스크립트에서 두 개의 동시 PHP 파일 다운로드 지연
- 27. 동시 다운로드 (cURL 사용)에 대한 다운로드 속도 제한을 설정해야합니까, 그렇지 않으면 균등하게 분배됩니까?
- 28. cocos2d를 Qt로 이식하는 방법
- 29. QT로 시작하는 방법은 무엇입니까?
- 30. QT로 테마를 만드는 방법
멋진 답변, 감사합니다! – Tom