Hi iMath, I'm convinced that the best way to do this is to use QNetworkAccessManager. It's more efficient (I think) because QNAM uses asynchronous I/O instead of just blocking in a thread. Furthermore, concurrent.futures does not execute callbacks in the main thread so a hack of sorts is necessary to get the data back to the GUI. We are doing something similar in our application and are in the process of moving from Requests/concurrent.futures to QNetworkAccessManager.
If you would like some example code, either for Requests/futures or QNAM, just let me know and I will polish it up and post it. Sincerely, -- Sean Fisk On Thu, Dec 11, 2014 at 12:14 AM, iMath <[email protected]> wrote: > > of course ,that's just an example . > what I want to do is to get the direct url of a few URLs having > redirections ,it would be better if this could be done asynchronously . > Currently ,I am using concurrent.futures.ThreadPoolExecutor , Requests > ,and QThread(for executing asynchronously ,not freeze the interface) to > achieve it. > > > ------------------ 原始邮件 ------------------ > *发件人:* "michael h";<[email protected]>; > *发送时间:* 2014年12月11日(星期四) 上午7:53 > *收件人:* "iMath"<[email protected]>; > *抄送:* "pyqt"<[email protected]>; "pyside"<[email protected]>; > > *主题:* Re: [PyQt] user interface freezed when using > concurrent.futures.ThreadPoolExecutor > > > On Wed, Dec 10, 2014 at 12:07 AM, iMath <[email protected]> wrote: > >> I think the user interface shouldn't be freezed when using >> concurrent.futures.ThreadPoolExecutor here, but it doesn't meet my >> expectations,anyone can explain why ? any other solutions here to not let >> user interface freezed? >> >> code is here >> >> http://stackoverflow.com/questions/27393533/user-interface-freezed-when-using-concurrent-futures-threadpoolexecutor >> >> <http://stackoverflow.com/questions/27393533/user-interface-freezed-when-using-concurrent-futures-threadpoolexecutor> >> >> _______________________________________________ >> PyQt mailing list [email protected] >> http://www.riverbankcomputing.com/mailman/listinfo/pyqt >> > > It appears: concurrent.futures.as_completed yields futures as they > complete, so the main thread is blocked as it loops over this until all the > futures have completed. > > You could use Qt's QNetworkAccessManager / QNetworkRequest, or perhaps you > want something like scrapy if you're trying to crawl websites (could > probably be integrated with a Qt app using qt4reactor) > > What are you building? > > - MH > > > _______________________________________________ > PySide mailing list > [email protected] > http://lists.qt-project.org/mailman/listinfo/pyside > >
_______________________________________________ PySide mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/pyside
