gpt4 book ai didi

python - 访问正在运行的 Python 代码

转载 作者:太空狗 更新时间:2023-10-30 02:58:15 25 4
gpt4 key购买 nike

如果这不是正确的表达方式,我深表歉意,但我不确定从哪里开始。如果这个问题需要改写,我一定会这样做。

我刚刚写完一段代码,从各种服务器收集数据。它目前正在运行,我希望能够开始编写其他代码来访问正在收集的数据。显然,我可以通过将数据转储到文件中,并让我的数据分析代码读取存储在磁盘上的文件来做到这一点。但是,对于某些形式的分析,我希望获得更接近实时数据的数据。有没有办法让我从我的数据收集代码段访问类而不显式实例化它?我的意思是,我是否可以设置一段代码来启动数据收集,然后在以后编写其他代码,这些代码能够在不停止和重新启动数据收集代码的情况下访问数据收集类?

我希望这是有道理的。我意识到数据可以只存储到磁盘,我可以做一些事情,比如让我的数据分析代码搜索目录以进行更改。但是,我只是想知道是否可以做这样的事情。

最佳答案

这好像是一个Producer Consumer问题。

The producer's job is to generate a piece of data, put it into the buffer and start again. At the same time, the consumer is consuming the data (i.e., removing it from the buffer) one piece at a time

The catch here is "At the same time". So, producer and consumer need to run concurrently. Hence we need separate threads for Producer and Consumer.

我正在从上面的链接中获取代码,您应该仔细阅读它以获取更多详细信息。

from threading import Thread
import time
import random
from Queue import Queue

queue = Queue(10)

class ProducerThread(Thread):
def run(self):
nums = range(5)
global queue
while True:
num = random.choice(nums)
queue.put(num)
print "Produced", num
time.sleep(random.random())


class ConsumerThread(Thread):
def run(self):
global queue
while True:
num = queue.get()
queue.task_done()
print "Consumed", num
time.sleep(random.random())


ProducerThread().start()
ConsumerThread().start()

解释:

  • 我们正在使用队列实例(以下简称队列)。队列有一个条件那个条件有它的锁。你不需要操心如果您使用队列,则条件和锁定。

  • Producer 使用 put available on queue 向队列中插入数据。

  • put() 具有在插入数据之前获取锁的逻辑排队。

  • 同时 put() 检查队列是否已满。如果是,则调用
    wait(),因此生产者开始等待。

  • 消费者使用 get。

  • get() 在从队列中删除数据之前获取锁。

  • get() 检查队列是否为空。如果是,它会让消费者进入等待状态。

关于python - 访问正在运行的 Python 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34667874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com