Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Twisted和libtorrent-我需要担心阻塞吗?_Python_Twisted_Bittorrent_Libtorrent - Fatal编程技术网

Python Twisted和libtorrent-我需要担心阻塞吗?

Python Twisted和libtorrent-我需要担心阻塞吗?,python,twisted,bittorrent,libtorrent,Python,Twisted,Bittorrent,Libtorrent,我正在考虑使用twisted构建一个多协议应用程序。其中一个协议是bittorrent。因为libtorrent是一个相当完整的实现,它的python绑定似乎是一个不错的选择。 现在的问题是: 将libtorrent与twisted一起使用时,是否需要担心阻塞 libtorrent网络层(使用boost.asio,一个异步网络循环)是否以任何方式干扰twisted epoll 我应该在线程中运行libtorrent会话还是以多进程应用程序设计为目标 我可能能够回答其中一些问题 所有libtor

我正在考虑使用twisted构建一个多协议应用程序。其中一个协议是bittorrent。因为libtorrent是一个相当完整的实现,它的python绑定似乎是一个不错的选择。 现在的问题是:

  • 将libtorrent与twisted一起使用时,是否需要担心阻塞
  • libtorrent网络层(使用boost.asio,一个异步网络循环)是否以任何方式干扰twisted epoll
  • 我应该在线程中运行libtorrent会话还是以多进程应用程序设计为目标

我可能能够回答其中一些问题

所有libtorrents逻辑(包括网络和磁盘I/O)都在单独的线程中完成。因此,总的来说,“阻塞”的担忧并没有那么大。假设您的意思是libtorrent函数不会立即返回

有些操作保证立即返回,而函数不返回任何状态或信息。但是,确实返回某些内容的函数必须与libtorrent主线程同步,并且如果它处于重载状态(特别是在带有不变检查和无优化的调试模式下构建时),这种同步可能会很明显,尤其是在制作许多函数时,而且通常是这样

有一些使用libtorrent的方法本质上更为异步,并且正在努力最小化使用同步函数的需要。例如,您可以订阅torrent状态更新,而不是单独查询所有torrent的状态。异步通知通过pop_警报()返回

它是否会干扰twisted的epoll;我不能肯定,但似乎不太可能

我认为不需要通过另一层线程与libtorrent交互,因为所有的工作都已经在单独的线程中完成了