Wednesday, December 25, 2024

[Python] Tính công suất tiêu thụ của thùng CPU máy tính

-

Giả sử tôi có 1 máy chủ với thông số Mainboard Intel S1200BTS, CPU E3 1230v1, RAM ECC 8GB (x4), Ổ cứng SSD (x2) và 1 nguồn Nguồn KENOO ESPORT E450.

Bước 1: Tính tổng công suất tiêu thụ của thùng máy.

Theo thông số kỹ thuật của các linh kiện mà tôi cung cấp, ta có thể tính toán tổng công suất tiêu thụ của hệ thống máy tính của bạn như sau:

  • Mainboard Intel S1200BTS: theo trang chủ của Intel, mainboard này có công suất tiêu thụ trung bình khoảng 40W.
  • CPU E3 1230v1: theo trang chủ của Intel, CPU này có công suất tiêu thụ trung bình khoảng 80W.
  • RAM ECC 8GB (x4): theo một số nguồn tham khảo, công suất tiêu thụ của RAM ECC thông thường trong khoảng 1-3W cho mỗi thanh. Với 4 cây RAM ECC 8GB, ta ước tính công suất tiêu thụ khoảng 16W.
  • Ổ cứng SSD (x2): theo một số nguồn tham khảo, ổ cứng SSD thường có công suất tiêu thụ thấp hơn so với ổ cứng cơ, khoảng 2-3W cho mỗi ổ. Với 2 ổ cứng SSD, ta ước tính công suất tiêu thụ khoảng 6W.
  • Nguồn KENOO ESPORT E450: theo thông tin của nhà sản xuất, nguồn này có công suất tiêu thụ tối đa là 450W.

Tổng công suất tiêu thụ của hệ thống máy tính của bạn sẽ là tổng của các giá trị trên, ta tính được:

40W (mainboard) + 80W (CPU) + 16W (RAM) + 6W (ổ cứng) = 142W

Vì công suất tiêu thụ của hệ thống máy tính của bạn là 142W, nên nếu bạn sử dụng nguồn KENOO ESPORT E450 (450W), thì nguồn sẽ cung cấp quá đủ năng lượng cho toàn bộ hệ thống. Tuy nhiên, nếu bạn muốn sử dụng hệ thống máy tính ở mức tối ưu nhất và bảo vệ cho các linh kiện, bạn nên sử dụng một nguồn có công suất tối thiểu là 20% lớn hơn công suất tiêu thụ của toàn bộ hệ thống (tức khoảng 170W), trong trường hợp này có thể sử dụng nguồn có công suất từ 200W trở lên.

Bước: Tính số tiền điện phải trả theo giờ.

Để tính toán chi phí điện hàng giờ, chúng ta cần biết công suất tiêu thụ của từng thành phần và giá thành mỗi kilowatt-giờ (kWh) điện trong khu vực của bạn.

Theo như tính toán ở phần trên thì thùng máy chủ với linh kiện Mainboard Intel S1200BTS, CPU E3 1230v1, RAM ECC 8GB (x4), Ổ cứng SSD (x2) và 1 nguồn Nguồn KENOO ESPORT E450 có tổng công suất là 142W.

Giả sử giá điện của bạn là 3000 đồng mỗi kWh, ta có thể tính toán chi phí điện hàng giờ như sau:

  • Tổng công suất tiêu thụ của hệ thống: 147 watts
  • Chuyển đổi sang kWh bằng cách chia cho 1000: 142 / 1000 = 0,142 kW
  • Giá tiền điện mỗi giờ: 0,142 kW x 3000 đồng/kWh = 426 đồng/giờ

Vì vậy, để chạy hệ thống của bạn trong một giờ, bạn sẽ cần trả khoảng 426 đồng tiền điện. Tuy nhiên, giá điện có thể khác nhau ở từng khu vực và thời điểm khác nhau, vì vậy bạn nên kiểm tra giá điện cục bộ của mình để tính toán chi phí chính xác hơn.

Dưới đây là cách sử dụng python để tính toán số tiền điện phải trả theo giờ.

# Nhập thông số từ người dùng
total_power = float(input("Nhập công suất tiêu thụ của PC (watts): "))
total_hours = int(input("Nhập số giờ sử dụng hệ thống: "))
electricity_cost = float(input("Nhập giá tiền mỗi kWh điện: "))

# Tính toán chi phí điện
hourly_cost = round(total_power / 1000 * electricity_cost)
formatted_hourly_cost = "{:,}".format(hourly_cost).replace(",", ".")

total_cost = round(hourly_cost * total_hours)
formatted_total_cost = "{:,}".format(total_cost).replace(",", ".")

month_cost = round(total_cost * 30)
formatted_month_cost = "{:,}".format(month_cost).replace(",", ".")

# In kết quả
print(f"Chi phí điện hàng giờ là {formatted_hourly_cost} đồng.")
print(f"Chi phí điện cho {total_hours} giờ sử dụng là {formatted_total_cost} đồng.")
print(f"Chi phí điện hàng tháng là {formatted_month_cost} đồng.")

Chạy thử đoạn code.

$ python3 run.py
Nhập công suất tiêu thụ của PC (watts): 142
Nhập số giờ sử dụng hệ thống: 8
Nhập giá tiền mỗi kWh điện: 3000

#Output
Chi phí điện hàng giờ là 426 đồng.
Chi phí điện cho 8 giờ sử dụng là 3.408 đồng.
Chi phí điện hàng tháng là 102.240 đồng.

Dưới đây là đoạn code nhập chi tiết từng thiết bị trong thùng máy tính.

# Nhập thông số từ người dùng
cpu_power = float(input("Nhập công suất tiêu thụ của CPU (watts): "))
ram_power = float(input("Nhập công suất tiêu thụ của mỗi thanh RAM (watts): "))
num_ram_sticks = int(input("Nhập số lượng thanh RAM: "))
ssd_power = float(input("Nhập công suất tiêu thụ của mỗi ổ cứng SSD (watts): "))
num_ssd = int(input("Nhập số lượng ổ cứng SSD: "))
motherboard_power = float(input("Nhập công suất tiêu thụ của bo mạch chủ (watts): "))
total_hours = float(input("Nhập số giờ sử dụng hệ thống: "))
electricity_cost = float(input("Nhập giá tiền mỗi kWh điện: "))

# Tính toán tổng công suất tiêu thụ
total_power = cpu_power + (ram_power * num_ram_sticks) + (ssd_power * num_ssd) + motherboard_power

# Tính toán chi phí điện
hourly_cost = round(total_power / 1000 * electricity_cost)
formatted_hourly_cost = "{:,}".format(hourly_cost).replace(",", ".")

total_cost = round(hourly_cost * total_hours)
formatted_total_cost = "{:,}".format(total_cost).replace(",", ".")

month_cost = round(total_cost * 30)
formatted_month_cost = "{:,}".format(month_cost).replace(",", ".")

# In kết quả
print(f"Chi phí điện hàng giờ là {formatted_hourly_cost} đồng.")
print(f"Chi phí điện cho {total_hours} giờ sử dụng là {formatted_total_cost} đồng.")
print(f"Chi phí điện hàng tháng là {formatted_month_cost} đồng.")

Hãy chạy thử đoạn code, ta có kết quả:

$ python3 run.py
Nhập công suất tiêu thụ của CPU (watts): 95
Nhập công suất tiêu thụ của mỗi thanh RAM (watts): 3
Nhập số lượng thanh RAM: 4
Nhập công suất tiêu thụ của mỗi ổ cứng SSD (watts): 2
Nhập số lượng ổ cứng SSD: 2
Nhập công suất tiêu thụ của bo mạch chủ (watts): 30
Nhập số giờ sử dụng hệ thống: 8
Nhập giá tiền mỗi kWh điện: 3000

#Output
Chi phí điện hàng giờ là 423 đồng.
Chi phí điện cho 8.0 giờ sử dụng là 3.384 đồng.
Chi phí điện hàng tháng là 101.520 đồng.

Hoặc bạn cũng có thể dùng đoạn code này để tự lựa chọn phần cứng:

# Giá điện hiện tại
electricity_cost = float(input("Nhập giá điện hiện tại (đồng/kWh): "))

# Danh sách phần cứng
hardware_list = [
    'Mainboard',
    'CPU',
    'RAM',
    'Ổ cứng HDD',
    'Ổ cứng SSD',
    'Card đồ họa',
    'Nguồn máy tính',
    'Màn hình',
]

# Nhập thông tin các thiết bị phần cứng và công suất tiêu thụ
hardware_power_list = []
while True:
    print("\nDanh sách phần cứng:")
    for i, hardware in enumerate(hardware_list):
        if hardware not in [item[0] for item in hardware_power_list]:
            print(f"{i+1}. {hardware}")
    print("0. Hoàn thành việc chọn phần cứng")
    choice = int(input("Chọn phần cứng để nhập công suất tiêu thụ (0 - 8): "))
    if choice == 0:
        break
    hardware = hardware_list[choice-1]
    if hardware == 'RAM' or hardware == 'Ổ cứng HDD' or hardware == 'Ổ cứng SSD':
        quantity = int(input(f"Nhập số lượng {hardware}: "))
        power = float(input(f"Nhập công suất tiêu thụ của {hardware} (W): ")) * quantity
        hardware_power_list.append((hardware, power))
    else:
        power = float(input(f"Nhập công suất tiêu thụ của {hardware} (W): "))
        hardware_power_list.append((hardware, power))

# Nhập số giờ sử dụng mỗi ngày
hours_per_day = float(input("Nhập số giờ sử dụng mỗi ngày: "))

# Tính tổng công suất tiêu thụ
total_power = sum(power for hardware, power in hardware_power_list)

# Tính số tiền phải trả mỗi giờ và mỗi tháng
hourly_cost = round(total_power / 1000 * electricity_cost)
monthly_cost = round(hourly_cost * hours_per_day * 30)

# In kết quả
print(f"\nTổng công suất tiêu thụ máy tính là {total_power} W")
if total_power > 500:
    print("Cảnh báo: Nguồn của bạn không đủ để cung cấp điện cho máy tính này!")
print(f"Số tiền phải trả mỗi giờ là {hourly_cost:,} đồng")
print(f"Số tiền phải trả mỗi tháng là {monthly_cost:,} đồng")

– Cách định bậc tiêu thụ điện của bạn hàng tháng.

Ví dụ: Nếu giá điện của bậc thấp nhất là 1.549 đồng/kWh (chưa bao gồm VAT), thì để tính số kWh tiêu thụ trong tháng, ta có thể sử dụng công thức sau:

Số kWh tiêu thụ = Tổng tiền điện hàng tháng / (giá điện bậc thấp nhất * (1 + VAT))

Với số tiền điện hàng tháng là 300.000 VNĐ, giá điện bậc thấp nhất là 1.549 đồng/kWh và VAT là 10%, ta có:

Số kWh tiêu thụ = 300.000 / (1.549 * 1.1) = 185.16 kWh

Tiếp theo, ta có thể áp dụng bảng giá điện của từng nhà cung cấp điện để xác định bậc tiêu thụ tương ứng với số kWh tiêu thụ này. Ví dụ, bảng giá điện của Tập đoàn Điện lực Việt Nam (EVN) hiện nay như sau:

  • Bậc 1: Cho kWh từ 0 đến 100; giá 1.549 đồng/kWh (chưa bao gồm VAT)
  • Bậc 2: Cho kWh từ 101 đến 200; giá 1.600 đồng/kWh (chưa bao gồm VAT)
  • Bậc 3: Cho kWh từ 201 đến 300; giá 2.701 đồng/kWh (chưa bao gồm VAT)
  • Bậc 4: Cho kWh từ 301 đến 400; giá 3.201 đồng/kWh (chưa bao gồm VAT)
  • Bậc 5: Cho kWh từ 401 đến 500; giá 3.701 đồng/kWh (chưa bao gồm VAT)
  • Bậc 6: Cho kWh từ 501 trở lên; giá 4.001 đồng/kWh (chưa bao gồm VAT)

Với số kWh tiêu thụ trong ví dụ trên là 185.16 kWh, ta có thể xác định bậc tiêu thụ và số tiền phải trả tương ứng như sau:

  • Bậc 1: 100 kWh * 1.549 đồng/kWh = 154.9 ngàn đồng
  • Bậc 2: 85.16 kWh * 1.600 đồng/kWh = 136.26 ngàn đồng

Tổng tiền điện cần thanh toán là: 154.9 + 136.26 = 291.16 ngàn đồng. Vậy trong trường hợp này, khách hàng sẽ nằm ở bậc tiêu thụ thứ 2.

Dưới đây là một đoạn mã Python để xác định bậc tiêu thụ điện dựa trên số kWh tiêu thụ. Bảng giá điện được sử dụng trong ví dụ này là bảng giá điện của Tập đoàn Điện lực Việt Nam (EVN) như đã nêu trong câu trả lời trước đó.

def tinh_tien_dien(sokwh):
    if sokwh <= 100:
        return sokwh * 1549, "Bậc 1"
    elif sokwh <= 200:
        tien_dien = 100 * 1549 + (sokwh - 100) * 1600
        return tien_dien, "bậc 2"
    elif sokwh <= 300:
        tien_dien = 100 * 1549 + 100 * 1600 + (sokwh - 200) * 2701
        return tien_dien, "bậc 3"
    elif sokwh <= 400:
        tien_dien = 100 * 1549 + 100 * 1600 + 100 * 2701 + (sokwh - 300) * 3201
        return tien_dien, "bậc 4"
    elif sokwh <= 500:
        tien_dien = 100 * 1549 + 100 * 1600 + 100 * 2701 + 100 * 3201 + (sokwh - 400) * 3701
        return tien_dien, "bậc 5"
    else:
        tien_dien = 100 * 1549 + 100 * 1600 + 100 * 2701 + 100 * 3201 + 100 * 3701 + (sokwh - 500) * 4001
        return tien_dien, "bậc 6"

sokwh = float(input("Nhập số kWh tiêu thụ: "))
tien_dien, bac_tieu_thu = tinh_tien_dien(sokwh)
print(f"Tổng tiền điện cần thanh toán cho {bac_tieu_thu}: {tien_dien:.2f} đồng")

Trong đoạn mã này, ta sử dụng hàm tinh_tien_dien để tính tổng tiền điện dựa trên số kWh tiêu thụ. Hàm này sử dụng các điều kiện if-elif-else để xác định bậc tiêu thụ và áp dụng giá điện tương ứng. Sau đó, ta sử dụng hàm input để yêu cầu người dùng nhập vào số kWh tiêu thụ, và in ra tổng tiền điện cần thanh toán.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories