CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.
Bài viết blog CFSDN này về một số cách tăng tốc hoạt động của python được tác giả sưu tầm và biên soạn. Nếu các bạn quan tâm đến bài viết này thì nhớ like nhé.
1. Tóm tắt
1. Sử dụng pypy 2. Giảm các cuộc gọi chức năng 3. Giảm việc mở tệp, nghĩa là với các cuộc gọi, hãy đặt cuộc gọi này trước vòng lặp for, sau đó chuyển nó đến nơi cần sử dụng sau này 4. Hãy thử sử dụng as nhiều nếu chức năng phán đoán điều kiện càng tốt Mặt trước được tăng tốc hoàn toàn (pypy).
2. Tăng tốc toàn diện (pypy)
Thay thế python bằng pypy. Theo mã python thuần, khả năng tương thích của pypy sẽ không ảnh hưởng đến việc sử dụng, vì một số mã python thuần thường sử dụng pypy để tăng tốc.
Mã kiểm tra, vòng lặp 10000000 lần.
?
1
2
3
4
5
|
bắt đầu
=
thời gian.thời gian()
vì
Tôi
TRONG
phạm vi
(
10000000
):
in
(tôi,kết thúc
=
"\r"
)
kết thúc
=
thời gian.thời gian()
in
(và)
"耗费时间{kết thúc-bắt đầu}秒>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> "
)
|
Thời gian mà pypy thực hiện là:

Và con trăn lấy .

Khoảng ba lần, nhưng càng nhiều vòng thì càng nhanh.
2. Giảm việc mở tệp, tức là với các cuộc gọi
Chữ with trong code gốc nằm trong hàm gọi, tức là file phải được mở và đóng mỗi khi hàm được gọi, gây tốn nhiều thời gian.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
định nghĩa
bmes(từ,thẻ):
với
mở
(r
"j:\pycharm project\đang học\nlp tutorial\nlp tutorial\dataset\gắn thẻ một phần của bài phát biểu\nature2ner.txt"
,
"một+"
,mã hóa
=
"utf-8"
)như f_:
nếu như
chỉ một
(từ)
=
=
1
:
f_.write(từ
+
" "
+
nếu
"s-{thẻ.upper()}"
+
"\N"
)
khác
:
vì
chỉ số, từ_
TRONG
liệt kê
(từ):
nếu như
chỉ số
=
=
0
:
f_.write(từ_
+
" "
+
nếu
"b-{thẻ.upper()}"
+
"\N"
)
Elif
0
< mục lục <
chỉ một
(từ)
-
1
:
f_.write(từ_
+
" "
+
nếu
"m-{thẻ.upper()}"
+
"\N"
)
khác
:
f_.write(từ_
+
" "
+
nếu
"e-{tag.upper()}"
+
"\N"
)
|
Tốn thời gian.

Thời gian dự kiến tqdm dao động trong khoảng 15 đến 25 giờ.
Đặt with ở phía trước vòng lặp.
giống.

Truyền nội dung của with dưới dạng f_.

Thời gian cuối cùng được thực hiện là:

Bài kiểm tra như sau:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
nhập khẩu
os, cảnh báo, thời gian, tqdm
định nghĩa
txt(từ):
với
mở
(
"ceshi.txt"
,
"một+"
,mã hóa
=
"utf-8"
)như f:
nếu như
chỉ một
(
đường
(từ))<
=
2
:
từ
+
=
100
f.viết(
đường
(từ)
+
"\N"
)
Elif
2
<
chỉ một
(
đường
(từ))<
=
4
:
từ
+
=
200
f.viết(
đường
(từ)
+
"\N"
)
khác
:
f.viết(
đường
(từ)
+
"\N"
)
nếu như
__tên__
=
=
"__chủ yếu__"
:
bắt đầu
=
thời gian.thời gian()
vì
Tôi
TRONG
tqdm.tqdm(
phạm vi
(
100000
)):
txt(tôi)
kết thúc
=
thời gian.thời gian()
in
(và)
"耗费时间{kết thúc-bắt đầu}秒>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> "
)
|
Kết quả tốn thời gian là:

Đặt phần mở tập tin, tức là có lệnh gọi bên ngoài.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
nhập khẩu
os, cảnh báo, thời gian, tqdm
định nghĩa
txt(f, từ):
nếu như
chỉ một
(
đường
(từ))<
=
2
:
từ
+
=
100
f.viết(
đường
(từ)
+
"\N"
)
Elif
2
<
chỉ một
(
đường
(từ))<
=
4
:
từ
+
=
200
f.viết(
đường
(từ)
+
"\N"
)
khác
:
f.viết(
đường
(từ)
+
"\N"
)
nếu như
__tên__
=
=
"__chủ yếu__"
:
bắt đầu
=
thời gian.thời gian()
với
mở
(
"ceshi.txt"
,
"một+"
, mã hóa
=
"utf-8"
)như f:
vì
Tôi
TRONG
tqdm.tqdm(
phạm vi
(
100000
)):
txt(f,i)
kết thúc
=
thời gian.thời gian()
in
(và)
"耗费时间{kết thúc-bắt đầu}秒>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> "
)
|
Tốn thời gian.

Kết luận: nhanh hơn 119 lần, nhưng gia tốc thực tế lớn hơn bội số này rất nhiều.
3. Nếu sự phán xét đến trước
giống:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
nếu như
nhãn
TRONG
[
"nt"
,
"đến"
,
"ntc"
,
"ntcb"
,
"ntcf"
,
"Ồ"
,
"thứ n"
,
"ntu"
,
"không"
]:
bmes(f_,i2, thẻ
=
"tổ chức"
)
Elif
nhãn
TRONG
[
"lưu ý"
,
"nba"
,
"NBC"
,
"nb"
,
"không"
,
"bước sóng"
,
"NMC"
,
"nhm"
,
"nh"
]:
bmes(f_,i2, thẻ
=
"đối tượng"
)
Elif
nhãn
TRONG
[
"và"
,
"không"
,
"không"
]:
bmes(f_,i2, thẻ
=
"công việc"
)
Elif
nhãn
TRONG
[
"số"
,
"không"
]:
bmes(f_,i2, thẻ
=
"mỗi"
)
Elif
nhãn
TRONG
[
"t"
]:
bmes(f_,i2, thẻ
=
"thời gian"
)
Elif
nhãn
TRONG
[
"ns"
,
"không có gì"
]:
bmes(f_,i2, thẻ
=
"địa điểm"
)
khác
:
vì
i3
TRONG
danh sách
(i2):
f_.write(i3
+
" "
+
nếu
"ôi"
+
"\N"
)
|
Người có đủ điều kiện có thể nhảy ra phán xét trước.
Đến đây là kết thúc bài viết về một số cách tăng tốc python. Để biết thêm thông tin về một số cách tăng tốc python, vui lòng tìm kiếm các bài viết trước của tôi hoặc tiếp tục duyệt các bài viết liên quan bên dưới. Tôi hy vọng bạn sẽ ủng hộ tôi trong tương lai! .
Liên kết gốc: https://blog.csdn.net/python__reported/article/details/118660689.
Cuối cùng, bài viết về một số cách để tăng tốc hoạt động của python kết thúc tại đây. Nếu bạn muốn biết thêm về một số cách để tăng tốc hoạt động của python, vui lòng tìm kiếm các bài viết về CFSDN hoặc tiếp tục duyệt các bài viết liên quan. blog của tôi! .
Tôi là một lập trình viên xuất sắc, rất giỏi!