Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/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 tensorflow:异步还是线程化_Python_Tensorflow_Websocket_Python Asyncio_Python Multithreading - Fatal编程技术网

Python tensorflow:异步还是线程化

Python tensorflow:异步还是线程化,python,tensorflow,websocket,python-asyncio,python-multithreading,Python,Tensorflow,Websocket,Python Asyncio,Python Multithreading,我正在实现一个服务器,使用tensorflow gpu“半实时”识别照片中的对象。它将在websocket连接上侦听新照片,然后将其排入一个列表,以便在空闲时运行检测器。使用asyncio或threading来处理websocket侦听器和识别队列会更简单吗?我不是线程/asyncio方面的专家,但可能生成一个Kafka实例并拥有一段可以侦听Kafka主题的代码会更容易些?对于本主题,如果您已经在本地存储了图像或图像路径,则可以将其推送到图像。此外,使用消费群体您将免费获得类似于负载平衡的东西,

我正在实现一个服务器,使用tensorflow gpu“半实时”识别照片中的对象。它将在websocket连接上侦听新照片,然后将其排入一个列表,以便在空闲时运行检测器。使用asyncio或threading来处理websocket侦听器和识别队列会更简单吗?

我不是线程/asyncio方面的专家,但可能生成一个Kafka实例并拥有一段可以侦听Kafka主题的代码会更容易些?对于本主题,如果您已经在本地存储了图像或图像路径,则可以将其推送到图像。此外,使用
消费群体
您将免费获得类似于负载平衡的东西,因为它是Kafka的一部分。

我不是线程/异步IO方面的专家,但也许生成一个Kafka实例并拥有一段可以听Kafka主题的代码会更容易些?对于本主题,如果您已经在本地存储了图像或图像路径,则可以将其推送到图像。此外,使用
消费群体
可以免费获得类似于负载平衡的东西,因为它是Kafka的一部分。

最终,我使用
asyncio
来处理websocket连接,将传入的映像排队。我使用了
threading
,它有一个线程将图像读入RAM,提取一些元数据,并将其排队等待对象检测器。检测器在另一个线程中运行,对图像进行标记,并将标记排入数据库处理程序(另一个线程)的队列。

最终我使用
asyncio
处理websocket连接,将传入的图像排入队列。我使用了
threading
,它有一个线程将图像读入RAM,提取一些元数据,并将其排队等待对象检测器。在另一个线程中运行的检测器对图像进行了标记,并在数据库处理程序(另一个线程)中将标记排队。

使用tensorflow gpu时,对象检测器仍处于阻塞状态。由于Python-GIL,线程不是真正的并行。这不会阻碍你的整个计划吗?很好。它的性能足以满足我的需要,每幅图像不到1s(Ryzen 2950X,RTX2080 GPU,以及从预先训练的tensorflow模型中重新训练的resnet-v2)。如果太慢的话,我正在考虑切换到tensorflow管道来读取图像。当使用tensorflow gpu时,物体检测器仍然阻塞。由于Python-GIL,线程不是真正的并行。这不会阻碍你的整个计划吗?很好。它的性能足以满足我的需要,每幅图像不到1s(Ryzen 2950X,RTX2080 GPU,以及从预先训练的tensorflow模型中重新训练的resnet-v2)。如果速度太慢的话,我正在考虑切换到tensorflow管道来读取图像。