与多个python程序共享数据

时间:2016-08-03 18:22:51

标签: python macos os.system

我正在通过多个网站抓取数据。 为此,我使用selenium和PhantomJs编写了多个web scraper。

那些刮刀返回值。

我的问题是:有没有办法可以将这些值提供给单个python程序,该程序将实时对该数据进行排序。

我想要做的是不保存该数据以便稍后分析我想将其发送到将实时分析它的程序。

我尝试了什么:我不知道从哪里开始

3 个答案:

答案 0 :(得分:0)

也许named pipe适合:

mkfifo whatever(您也可以在python脚本中执行此操作; os.mkfifo

您可以像普通文件一样写入whatever(它会阻塞直到读取它)并使用不同的进程从whatever读取(如果没有可用的数据,它将阻止)

实施例

# writer.py

with open('whatever', 'w') as h:
    h.write('some data') # Blocks until reader.py reads the data


# reader.py

with open('whatever', 'r') as h:
    print(h.read()) # Blocks until writer.py writes to the named pipe

答案 1 :(得分:-1)

您可以尝试将要共享的数据写入文件,并将其他脚本读取并解释。让另一个脚本循环运行以检查是否有新文件或文件是否已更改。

答案 2 :(得分:-1)

只需使用文件进行数据交换和简单的锁定机制。 每个作家或读者(似乎只有一个读者)获得一个唯一的数字。 如果作者或读者想要写入文件,它会将其重命名为原始名称+数字,然后写入或读取,然后重命名。 其他人等到文件再次以其自己的名称可用,然后通过以类似方式锁定它来访问它。

当然,你有共享内存和这样的,或memmapped文件和信号量。但是,对于我来说,这种机制在任何操作系统上都可以通过任何网络完美地运行30多年。因为它很简单。

事实上,这是一个穷人的互斥信号量。 要查明文件是否已更改,请查看其写入时间戳。 但锁定也是必要的,否则你会陷入混乱。