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

Reply via email to