Trăn thì là vs dưa chua

Nó hoạt động khi tôi chạy nó. Tôi sẽ thừa nhận tôi không hiểu

import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
4 và
import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
5 100% vì vậy tôi không chắc liệu có thể có một số cảnh báo kỳ lạ hay không, nhưng cho đến nay nó có vẻ hoạt động. Nhận xét được khen thưởng. )


Sau một số nghiên cứu nữa nếu bạn gọi

import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
6 như tôi đã đề xuất với Globals và
import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
6 nằm trong một chức năng, nó sẽ không hoạt động như mong đợi nếu bạn muốn lưu các veria trong phạm vi địa phương. Cho công việc sử dụng

import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
0. Điều này xảy ra bởi vì Globals lấy toàn bộ yêu cầu từ mô-đun -nơi chức năng được xác định, không phải từ nơi được gọi là dự đoán của tôi

Nhà khoa học dữ liệu Python char. Cách bán tải từ ngày hôm qua

Nhiều nghiên cứu sinh-datascientist, nếu tình cờ vượt qua

import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
1 trên đường, có thể bỏ lỡ một tính năng tiện dụng ở đó để tiết kiệm thời gian làm việc. Bạn đã thực hiện một số phân tích, có một loạt các kết quả trung gian mà bạn muốn sao lưu thời gian tạm thời để sử dụng lại sau này mà không cần phải chạy lại toàn bộ phân tích từ đầu. Trong
import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
1, nó đơn giản như
import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
3. Làm thế nào chúng ta sẽ làm điều đó trong
import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
4?

Có gì trên bàn?

Chúng ta có gì trong khoảng thời gian không làm việc Python bình thường của mình?

Show does not time working at

Ở đây, chúng tôi đã tìm thấy hai biến

import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
6 mà chúng tôi vừa tạo, ngoài các thuộc tính được phân tích mặc định khác

Chúng ta có thể lấy lại giá trị của các biến đó bằng cách sử dụng

import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
5

Truy xuất giá trị của các biến

Bây giờ chúng tôi có thể tự động nhận tên và giá trị của tất cả các biến trong phiên bản Python của chúng tôi. Chúng ta có thể dễ dàng sao lưu những người này bằng cách sử dụng mô-đun tiêu chuẩn. Chỉ cần là đồ rằng không phải tất cả thứ là dưa chua. Một ví dụ đơn giản có thể là hàm

import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
9. Không phải tất cả các thứ đều có thể được nghe

Danh sách mở rộng hơn của các đối tượng có thể chọn có thể được tìm thấy ở đây

Để tránh lỗi khi sao lưu, chúng tôi có thể lọc các đối tượng không thể sử dụng

import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
30.
import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
3Kiểm tra xem các đối tượng có thể chọn được không

Làm thế nào để sao lưu này?

Đặt tất cả lại với nhau, đây là một số giải pháp đơn giản

First solution is with standard module -mô-đun

import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
11.
import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
31

Chúng tôi sẽ liệt kê tất cả các đối tượng trên mạng trong phiên bản hiện tại bằng

import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
4 và truy xuất giá trị của chúng bằng
import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
5. One dictionary

import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
34 tạm thời được sử dụng để thu thập tất cả các đối tượng và sau đó
import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
8 được sử dụng cho tuần tự hóa
import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
34 thành một tệp.
import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
6

Giải pháp thứ hai cho gói

import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
17. gói
import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
37

Theo cách tiếp cận tương tự, chúng ta có thể sử dụng mô-đun tiêu chuẩn ____28 để lưu và sau đó Khôi phục các đối tượng có thể lấy được trong phiên bản Python. Như sau hậu trường,

import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
38 sử dụng
import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
8 để tuần tự hóa và giảm giá cấu trúc dữ liệu, logic của chúng tôi sẽ rất giống nhau. Ngoài ra, chỉ các đối tượng có thể lấy mới có thể được lưu lại và phục hồi bằng
import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
38.
import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
2

Sự khác biệt cơ bản giữa các phương pháp dựa trên

import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
8 và
import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
38 nằm ở bản chất của tạm thời đối tượng của chúng tôi. Trong giải pháp đầu tiên,
import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
34 là một từ điển thực sự chứa một bản sao của tất cả các đối tượng đã được lưu. Do đó, khi chúng tôi kiểm tra kích thước của đối tượng_______134 trong hai giải pháp
import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
34 thì kích thước sẽ là tổng của tất cả các đối tượng được lưu và làm điều đó lớn hơn kích thước của mỗi đối tượng. Kích thước của `bk` là bộ sưu tập của tất cả các đối tượng được lưu, do đó kích thước lớn hơn

Trong giải pháp thứ hai này,

import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
34 chỉ là một tham chiếu đến
import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
99. Thật vậy,
import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
38 đóng vai trò là giao diện cho cơ sở dữ liệu
import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
21 cơ bản. Kích thước của _
import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
22in this field is small than more in this field. Kích thước của `bk` với cách tiếp cận với kệ` nhỏ hơn nhiều

Do đó, có ít nhất hai lợi thế trong quá trình sử dụng

import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
38
  • Nhận bộ nhớ thấp hơn khi sao lưu phiên bản hiện tại
  • Có thể tải xuống một phần đã lưu phiên bản bằng cách mở cơ sở dữ liệu và chỉ tải xuống các biến bắt buộc

Giải pháp thứ ba là với

import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
44.
import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
24

Như đã đề cập ở trên, có những đối tượng mà chúng ta sẽ không thể lừa, ví dụ, chức năng Lambda. Chúng ta có thể sử dụng giải pháp của bên thứ ba với mô-đun

import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
25. Nó cho phép tuần tự hóa nhiều loại đối tượng hơn. Và trong trường hợp thất bại, nó cung cấp các chức năng, ví dụ.
import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
26 để điều khiển các thuộc tính thất bại bên trong đối tượng đó.
import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
8

Chúng tôi có thể xác minh điều này bằng cách kiểm tra tổng số đối tượng được khôi phục từ phiên bản đã lưu bằng cách sử dụng

import my_pkg as mp

x=1

mp.load_workspace('a', globals())

print x #print 3 for me
38 (or____08) và______025. Chỉ có 7 đối tượng được ngâm và do đó được khôi phục bằng cách sử dụng `kệ` (or` dưa chua), có nhiều đối tượng có thể được lưu lại và do đó được phục hồi bằng cách sử dụng `Dill`

Đây là một ví dụ đơn giản để hiển thị nguyên tắc. Vui lòng kiểm tra chính mình. Mã hoàn chỉnh có thể được tìm thấy trong github của tôi

Ghi chú cuối cùng

Có hai điều không được thảo luận ở đây nhưng sẽ rất quan trọng để biết

  • Deserialize use
    import my_pkg as mp
    
    x=1
    
    mp.load_workspace('a', globals())
    
    print x #print 3 for me
    
    8 có thể là một cạm bẫy nghiêm trọng trong an ninh. Xin hãy cẩn thận để không giải nén các đối tượng ngâm từ nguồn không xác định. Tôi sẽ thảo luận về điều này sâu trong một bài viết khác
  • import my_pkg as mp
    
    x=1
    
    mp.load_workspace('a', globals())
    
    print x #print 3 for me
    
    8 chỉ tạo tài liệu tham khảo tên cho các chức năng và các lớp và mô-đun mà chúng được đưa ra. Chức năng không phải là chức năng. Do đó, bạn cần phải xác định mô đun -module trong đó các chức năng và định nghĩa của lớp có thể giải nén chính xác các đối tượng đã lưu của bạn. Không phải mã chức năng. Do đó, bạn sẽ cần mô-đun xác định nơi định nghĩa của hàm và lớp để có thể giải mã chính xác các đối tượng đã lưu của bạn

Thank you many because have read. Nếu bạn có bất kỳ giải pháp hoặc nhận xét thay thế nào cho các cách tiếp cận tốt hơn, vui lòng nhận lại nhận xét