我正在研究使用twisted构建多协议应用程序。其中一个协议是bittorrent。由于libtorrent是一个相当完整的实现,它的python绑定似乎是一个不错的选择。 现在的问题是:
答案 0 :(得分:2)
我或许能够为其中一些问题提供答案。
所有libtorrents逻辑,包括网络和磁盘I / O都是在不同的线程中完成的。所以,总而言之,“封锁”的关注并不是那么好。假设你的意思是libtorrent函数没有立即返回。
保证一些操作立即返回,不返回任何状态或信息的函数。但是,返回某些内容的函数必须与libtorrent主线程同步,如果负载很重(特别是在调试模式中使用不变检查而不进行优化时),这种同步可能会很明显,特别是在制作其中很多时,经常。
有一些方法可以使用本质上更异步的libtorrent,并且一直在努力减少使用同步函数的需求。例如,不是单独查询所有种子的状态,而是可以订阅种子状态更新。异步通知通过pop_alerts()返回。
是否会干扰扭曲的epoll;我不能肯定地说,但似乎不太可能。
我认为不需要通过另一个线程层与libtorrent进行交互,因为所有的工作都是在不同的线程中完成的。