2015-04-10 4 views
0

Je lis les données financières de mon courtier en temps réel via une API websocket. Le client est écrit en Python. J'ai un autre programme C++ qui lit ces données, mais la façon dont je communique avec le script python est à travers un fichier texte physique.Communication inter-processus à l'aide de fichiers texte physiques

Mes questions sont ...

1) Est-ce que la réécriture constante du fichier texte, l'ouverture, la lecture et la fermeture elle affecte chaque performance? Si oui, quelle est la meilleure façon de le faire? Les performances de mon application sont cruciales.

2) L'utilisation de tuyaux nommés serait-elle une meilleure option? Ou est-ce à peu près la même chose que d'écrire et de lire dans un fichier texte?

+0

* Est-ce que réécrire constamment le fichier texte, l'ouvrir, le lire et le fermer à chaque fois affecte les performances? * Oui –

+0

L'écriture dans les fichiers est lente, les tuyaux sont rapides. – 101

+1

Je ne suis pas sûr que je classifierais en utilisant des fichiers texte comme IPC IMO – EdChum

Répondre

3

Le système d'exploitation moderne prend en charge de nombreux différents IPC. Pipes, tubes nommés, sockets, fichiers mappés en mémoire, ... Le choix d'une solution ou de l'autre dépend beaucoup de votre application. Mais d'une manière générale, tous devraient être «meilleurs» que d'utiliser un fichier ordinaire.

Comme IPC sont des objets gérés par le système d'exploitation, ils sont pas dépendants de la langue utilisée pour écrire les différents processus. Certains IPC ont une sémantique de fichier (pipes, tubes nommés). D'autres nécessitent l'utilisation de certaines primitives système dédiées (mmap). Mais C++ et Python (et beaucoup d'autres langages) prendront en charge l'appel système requis. En fait, IPC sont grand pour aider les logiciels écrits dans différentes langues pour parler ensemble.

+1

Juste pour être clair, n'essayez pas de mmap'ing un tuyau nommé! (Je sais que tu n'as pas dit ça) – cdarke