使用 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使用cookie登陆网页

Python基础 -- Python环境的安装pip的使用终端运行python文件Pycharm的安装和使用Pycharm基本设置:设置Python文件默认格式

在python使用SSL(HTTPS)

python 爬虫使用方法分享——安装python

python基础之从认识python到python的使用

python文档翻译之使用python解释器