簡體   English   中英

程序相互交互的多個實例化(Python2.7和Tkinter)

[英]Multiple Instantiation of Programs interacting with one another (Python2.7 & Tkinter)

我目前有一個餐廳模擬程序,Tkinter的GUI,我正在尋找一種方法,可以在更新其關鍵變量的意義上使程序的多個實例相互交互。 (對不起,我英語不好)

比方說:

  • 五名用戶使用同一台PC同時打開了該程序。 (假想)
  • 程序中包含三個功能,分別是OrderSee InventorySee Sales
  • 假設所有五個人都下了訂單

現在,餐廳必須跟蹤所下的訂單以及烹飪食物的庫存。

我嘗試通過使用txt文件導入和導出來跟蹤程序來對程序進行編碼,以跟蹤數據,但是直到現在,我才意識到txt文件可以一次由程序進行編輯。 (無法一次編輯單個txt文件)

問:保存程序中使用的變量的值,以便多個用戶可以實時使用變量的更新值使用該程序,哪種方法更好?

  • 有人告訴我,我可以嘗試使用Global變量。 但是我怎么可能給它們賦值並保持更新呢? (每次運行程序時都會初始化局部變量)

感謝您閱讀我的問題!

您可以使用sqlite3模塊創建輕量級數據庫。 這不需要服務器程序。 數據庫管理器位於Python標准庫中。 多個實例將讀取/寫入同一文件數據庫,而sqlite將確保一致性。

但是,請注意, 大多數sqlite實現都具有5秒的全局鎖定 ,因此您的多個實例中的任何一個實例都必須在少於該時間的時間內完成其讀/寫操作,否則在其他實例中將導致“數據庫鎖定”異常。

這里有一個例子:

import sqlite3 as lite
import time


con = lite.connect('common.db')
cur = con.cursor()
cur.execute(
    "CREATE TABLE IF NOT EXISTS restaurant (orderId INT primary key, inventory TEXT, sales INT);")

for i in range(5):
    print "About to insert on ID: %s" % i
    cur.execute("INSERT INTO restaurant VALUES(%d, 'burger', 1)" % i)
    time.sleep(1)

con.close()

如果您同時在兩個終端上執行此代碼,則會注意到:

  1. 創建一個“ common.db”文件
  2. 兩次處決之一自由推進; 另一個前進到“要在ID上插入:0”這一點,然后鎖定直到第一個完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM