使用 Python websocket-client 多线程
Posted
技术标签:
【中文标题】使用 Python websocket-client 多线程【英文标题】:Using Python websocket-client multi threaded 【发布时间】:2017-10-20 02:03:53 【问题描述】:使用 Python websocket-client 和 multiprocessing.Pool 我能够生成 3 个 websocket-client 实例,每个实例连接到不同的 URL,并将数据写入 3 个单独的字典。
我的目标是运行第 4 个进程,该进程能够在更新时读取所有 3 个字典中的数据。
在这些进程之间共享数据的最佳方式是什么?
我查看了multiprocessing examples,但因为websocket.WebSocketApp 采用包含要调用的函数名称的参数(on_message)并且它不接受其他自定义参数,所以我不清楚 on_message 函数将能够传递Value 或管道等的实例。
【问题讨论】:
【参考方案1】:多进程不共享数据,因此您必须使用某种数据库。
我使用 gevent 和 gevent-websocket 库。
https://pypi.python.org/pypi/gevent-websocket/
您有两个选择,您可以异步运行任意数量的项目,或者您可以使用 GIPC 模块,它实际上为您处理 gevent 的多进程,另外还有一个好处是能够通过读写管道相互交谈。
https://gehrcke.de/gipc/
【讨论】:
以上是关于使用 Python websocket-client 多线程的主要内容,如果未能解决你的问题,请参考以下文章
Python基础 -- Python环境的安装pip的使用终端运行python文件Pycharm的安装和使用Pycharm基本设置:设置Python文件默认格式