logo

Đang load dữ liệu

logo devmaster

VIỆN CÔNG NGHỆ VÀ ĐÀO TẠO DEVMASTER

Đào tạo - Phần mềm - Cho thuê nhân sự

  • 0969.609.003
  • 0978.611.889
  • Trang chủ
  • Các khoá đào tạo
    • Chuyên đề WEB - PHP

      • Lập trình web với HTML5 - CSS3- JQuery - Bootstrap - Ajax - [36 giờ]
      • Lập trình web frontend - reactjs - [75 giờ]
      • Lập trình web với mã nguồn mở PHP&MYSQL - PHP FRAMEWORK [126 giờ]

      Chuyên đề Mobile

      • Lập trình Games/Apps trên nền tảng Android - [120 giờ]
      • Lập trình Games/Apps trên nền tảng IOS - [120 giờ]

      Chuyên đề JAVA

      • Ngôn ngữ lập trình hướng đối tượng với java - [40 giờ]
      • Lập trình ứng dụng với java - [100 giờ]
      • Lập trình web site với java framework (JPA, HIBERNATE, SPRING MVC, SPRINGBOOT) - [276 giờ]

      Chuyên đề NETWORK/SECURITY

      • Khoá học Quản trị hạ tầng mạng CCNA v6 - [72 giờ]
      • Khoá học quản trị hệ thống với Windows SERVER 2012- [72 giờ]
      • Chuyên gia bảo mật hệ thống CompTIA + - [110 giờ]

      Chuyên đề .NET

      • Nền tảng lập trình hướng đối tượng với C# - [40 giờ]
      • Lập trình ứng dụng WINDOWS FORM - [100 giờ]
      • Lập trình Web với ASP.NET MVC 5, WebAPI - [145 giờ]

      Chuyên đề khác

      • Ngôn ngũ lập trình C/C++ - [80 giờ]
  • Lập trình cho trẻ em
  • Dịch vụ
    • Đào tạo theo như cầu
    • Cung cấp thiết bị - Phần mềm
    • Tư vấn - Thiết kế mạng hạ tầng
    • Tư vấn - Triển khai dịch vụ mạng
    • Tư vấn - Tư vấn, triển khai giám sát hệ thống
    • Thực tập dự án
  • Lịch khai giảng
  • Tin tức
    • Tin tức và sự kiện
    • Tin hoạt động
    • Tin công nghệ
    • Hội thảo, workshop, Codecam
    • Thông tin việc làm
    • Cẩm nang chia sẻ kiến thức
  • Tiện ích
  • Liên hệ

Cẩm nang chia sẻ kiến thức

Jul - 2020

13

Phương thức nhập liệu trong Python để nâng cao hiệu suất

Cẩm nang chia sẻ kiến thức

Python là một ngôn ngữ thân thiện với người dùng một cách đáng kinh ngạc với điểm trừ duy nhất là chậm. So với C, C ++ và Java, nó khá chậm. Trên nền tảng lập trình trực tuyến, nếu C/C ++ giới hạn thời gian quy định là X, thì thông thường, trong Java, thời gian cần thiết là 2X và với Python, đó là 5X.

Để cải thiện tốc độ thực thi mã cho các vấn đề chuyên sâu đầu vào/đầu ra, các ngôn ngữ có các quy trình đầu vào và đầu ra khác nhau.

Lấy một ví dụ:
Hãy xem xét một câu hỏi về việc tìm ra tổng số N được nhập từ người dùng.
Nhập một số N .
Nhập N số cách nhau bởi một khoảng trắng trên một dòng.
Ví dụ:

Input :

5

1 2 3 4 5

Output :

15

 

Các giải pháp khác trong Python cho vấn đề trên:

Phương pháp thông thường trong Python: (Python 2.7)

1. raw_input () nhận một đối số tùy chọn. Nó cũng loại bỏ ký tự dòng mới từ giá trị string mà nó trả về.
2. print chỉ là một trình bao bọc mỏng định dạng các đầu vào (khoảng trắng giữa các đối số và newline ở cuối) và gọi hàm write của một đối tượng đã cho.

# basic method of input output

# input N

n = int(raw_input())

 

# input the array

arr = [int(x) for x in raw_input().split()]

 

# initialize variable

summation = 0

 

# calculate sum

for x in arr:

    summation += x

 

# print answer

print(summation) < code lang = "python" class = "  language-python" >

 

Phương pháp nhanh hơn một chút bằng cách sử dụng tích hợp stdin, stdout: (Python 2.7)

1. sys.stdin, mặt khác, là đối tượng tệp. Nó giống như việc người ta có thể tạo ra bất kỳ đối tượng tệp nào khác mà để đọc đầu vào từ tệp. Trong trường hợp này, tập tin sẽ là bộ đệm đầu vào tiêu chuẩn.
2. stdout.write(‘D\n’) nhanh hơn print’D’ .
3. Thậm chí nhanh hơn là viết tất cả một lần bằng stdout.write (“”.join(list-comprehension)) nhưng điều này làm cho việc sử dụng bộ nhớ phụ thuộc vào độ lớn của dữ liệu đầu vào.

# import inbuilt standard input output

from sys import stdin, stdout

 

# suppose a function called main() and

# all the operations are performed

 

def main():

 

    # input via readline method

    n = stdin.readline()

 

    # array input similar method

    arr = [int(x) for x in stdin.readline().split()]

 

    #initialize variable

    summation = 0

 

    # calculate sum

    for x in arr:

        summation += x

 

    # could use inbuilt summation = sum(arr)

 

    # print answer via write

    # write method writes only

    # string operations

    # so we need to convert any

    # data into string for input

    stdout.write(str(summation))

# call the main method

if __name__ == "__main__":

    main()

 

Sự khác biệt về thời gian:

Timing summary (100k lines each)
——————————–
Print : 6.040 s
Write to file : 0.122 s
Print with Stdout : 0.121 s

 

Thêm buffered pipe io: (Python 2.7)

1. Hiểu đơn giản, việc thêm code buffered IO trước submission code làm cho đầu ra nhanh hơn.
2. Lợi ích của các đối tượng io.BytesIO là chúng thực hiện giao diện common-ish (thường được gọi là đối tượng ‘giống tệp’). Các đối tượng BytesIO có một con trỏ bên trong và cứ mỗi lệnh gọi để đọc (n) thì con trỏ hiện lên.
3. Mô-đun atexit cung cấp một giao diện đơn giản để đăng ký các hàm được gọi khi chương trình đóng lại bình thường. Các mô-đun sys cũng cung cấp một cái móc, là sys.exitfunc, nhưng chỉ đăng ký một hàm ở đó. Việc đăng ký atexit có thể được sử dụng bởi nhiều mô-đun và thư viện cùng một lúc.

# template begins

#####################################

 

# import libraries for input/ output handling

# on generic level

import atexit

import io

import sys

 

# A stream implementation using an in-memory bytes

# buffer. It inherits BufferedIOBase.

buffer = io.BytesIO()

sys.stdout = buffer

 

# print via here

@atexit.register

def write():

    sys.__stdout__.write(buffer.getvalue())

 

#####################################

# template ends

 

# normal method followed

# input N

n = int(raw_input())

 

# input the array

arr = [int(x) for x in raw_input().split()]

 

# initialize variable

summation = 0

 

# calculate sum

for x in arr:

    summation += x

 

# print answer

print(summation) < code lang = "python" class = "  language-python" >

 

 

hường xử lý một lượng lớn dữ liệu, phương thức bình thường không thực thi trong khoảng thời gian giới hạn. Phương thức 2 giúp duy trì một lượng lớn dữ liệu I/O. Phương thức 3 là nhanh nhất. Thông thường, phương thức 2 và 3 hỗ trợ việc xử lý các tệp dữ liệu đầu vào lớn hơn 2 hoặc 3 MB.

Lưu ý: các code đề cập ở trên được sử dụng trong Python 2.7. Để sử dụng trong các phiên bản Python 3.X, chỉ cần thay thế raw_input() bằng cú pháp input() của Python 3.X. Phần còn lại vẫn hoạt động bình thường.


Devmaster Academy via Cafedev

 

Các bài viết cùng chủ đề

BÍ QUYẾT HỌC LẬP TRÌNH CHO CÁC BẠN ĐẦU NĂM HỌC MỚI ❤
BÍ QUYẾT HỌC LẬP TRÌNH CHO CÁC BẠN ĐẦU NĂM HỌC MỚI...
5 Phương pháp hay để mở rộng các dự án React của bạn một cách dễ dàng
5 Phương pháp hay để mở rộng các dự án React của b...
Lab06.1 - Data Access In ASPNET MVC 5
Lab06.1 - Data Access In ASPNET MVC 5
Lab05 - Data Validation and Annotation In ASPNET MVC 5
Lab05 - Data Validation and Annotation In ASPNET M...
Lab 04 - Model in ASP.NET MVC 5 - Phần tự thực hành
Lab 04 - Model in ASP.NET MVC 5 - Phần tự thực hàn...
Lab 04 - Model in ASP.NET MVC 5 - Bài 4.2
Lab 04 - Model in ASP.NET MVC 5 - Bài 4.2

Các khóa đào tạo chuyên đề

Thiết kế và lập trình Website PHP, Laravel chuyên nghiệp - FullStack
Thiết kế và lập trình Website PHP, Laravel chuyên nghiệp - FullStack
Lập trình ứng dụng trên nền tảng android Lập trình ứng dụng trên nền tảng android
Lập trình Ứng dụng với Công nghệ ASP.NET Core MVC, WebAPI, ReactJS - FullStack

Lập trình Ứng dụng với Công nghệ ASP.NET Core MVC, WebAPI, ReactJS - FullStack
Lập trình ứng dụng với WINDOWS FORM Lập trình ứng dụng với WINDOWS FORM
Lập trình ứng dụng với JAVA (FORM) Lập trình ứng dụng với JAVA (FORM)
Thiết kế và lập trình Ứng dụng với công nghệ Java (Java Framework springBoot, hibernate,...) - FullStack
Thiết kế và lập trình Ứng dụng với công nghệ Java (Java Framework springBoot, hibernate,...) - FullStack
Thiết kế và lập trình website với công nghệ HTML5, CSS3, Javascript, Bootstrapt 4, Jquery Thiết kế và lập trình website với công nghệ HTML5, CSS3, Javascript, Bootstrapt 4, Jquery
Lập trình frontend với reacjs (Full) Lập trình frontend với reacjs (Full)
DEVMASTER
Viện Công Nghệ Và Đào Tạo Devmaster

DEVMASTER ACADEMY

Địa chỉ: Tầng 6 - Tòa nhà VIỆN CÔNG NGHỆ
Số 25, Vũ Ngọc Phan - Láng Hạ - Đống Đa - Hà Nội

Hotline: 0969 609 003 | 0978 611 889

devmaster.contact@gmail.com

hna.tvchung@gmail.com

CÁC KHÓA HỌC CHUYÊN ĐỀ

  • Thiết kế và lập trình Website PHP, Laravel chuyên nghiệp - FullStack
  • Lập trình ứng dụng trên nền tảng android
  • Lập trình Ứng dụng với Công nghệ ASP.NET Core MVC, WebAPI, ReactJS - FullStack
  • Lập trình ứng dụng với WINDOWS FORM
  • Lập trình ứng dụng với JAVA (FORM)
  • Thiết kế và lập trình Ứng dụng với công nghệ Java (Java Framework springBoot, hibernate,...) - FullStack
  • Thiết kế và lập trình website với công nghệ HTML5, CSS3, Javascript, Bootstrapt 4, Jquery
  • Lập trình frontend với reacjs (Full)
Viện Công Nghệ Và Đào Tạo Devmaster

VIỆN CÔNG NGHỆ VÀ ĐÀO TẠO DEVMASTER - Học thực tế * Làm thực tế * Cam kết việc làm
Copyright by Ⓒ DEVMASTER 2015